我编写了自定义的java ssl工厂,在尝试与postgresql 进行ssl握手时不使用默认的ssl工厂(org.postgresql.ssl.DefaultJavaSSLFactory(
jdblUrl=jdbc:postgresql://hostname:port/dbName?sslmode=verify-ca&sslfactory=PathToMyCustomJavaSSLFactory
自定义SSL工厂类在不同的jar文件中,我正试图在主jar文件中使用。当我在eclipse中本地运行应用程序时,我能够在调用DB时成功地使用它。但是,当我将主jar推送到云铸造并尝试运行它时,我得到了自定义SSL工厂类的ClassNotFoundException。在这个jar文件中还有其他类,我可以从主jar调用它们。但仅对于自定义ssl工厂,它抛出ClassNotFoundException。
有人能帮我处理一下我可能遗漏的东西吗。
异常跟踪:
{java.lang.ClassNotFoundException: com.cf.commons.db.ssl.CustomJavaSSLFactory","tat java.net.URLClassLoader.findClass(URLClassLoader.java:449)","tat java.lang.ClassLoader.loadClass(ClassLoader.java:482)","tat sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:384)","tat java.lang.ClassLoader.loadClass(ClassLoader.java:415)","tat java.lang.Class.forName0(Native Method)","tat java.lang.Class.forNameFW(Class.java:362)","tat java.lang.Class.forName(Class.java:270)","tat org.postgresql.util.ObjectFactory.instantiate(ObjectFactory.java:50)","tat org.postgresql.core.SocketFactoryFactory.getSslSocketFactory(SocketFactoryFactory.java:64)","t... 77 more"] }
我正在使用Java 8
我使用将jar文件包含在引导加载程序类路径中,从而解决了这个问题
-Xbootclasspath/a:
选项。但我还是不喜欢这个解决方案。
p.S,此外,堆叠式中还有另一条线索