Jag*_*h G 13 java service classpath
我创建了一个自定义SSLSocketFactory类并将其设置如下
ldapEnv.put(Context.SECURITY_PROTOCOL, "ssl");
ldapEnv.put(FACTORY_SOCKET, socketFactoryClass);
LdapContext ldapContext = new InitialLdapContext(ldapEnv, null);
Run Code Online (Sandbox Code Playgroud)
它从Eclipse Dev Environment运行时运行正常,并从命令提示符运行它作为Jar文件.但是当我将其包装在服务包装器中并将其作为Windows服务启动时,它不起作用.我得到以下异常,
javax.naming.CommunicationException: 192.168.100.22:636 [Root exception is java.lang.ClassNotFoundException: com/testing/diraccess/service/ActiveDirectory$TestSSLFactory]
at com.sun.jndi.ldap.Connection.<init>(Unknown Source)
at com.sun.jndi.ldap.LdapClient.<init>(Unknown Source)
at com.sun.jndi.ldap.LdapClient.getInstance(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.connect(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.<init>(Unknown Source)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(Unknown Source)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(Unknown Source)
at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(Unknown Source)
at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(Unknown Source)
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.init(Unknown Source)
at javax.naming.ldap.InitialLdapContext.<init>(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com/testing/diraccess/service/ActiveDirectory$TestSSLFactory
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.sun.jndi.ldap.VersionHelper12.loadClass(Unknown Source)
at com.sun.jndi.ldap.Connection.createSocket(Unknown Source)
... 35 more
Run Code Online (Sandbox Code Playgroud)
任何帮助???
自从我发布这个问题以来已经很长时间了。由于这篇文章没有任何答案,而且似乎也得到了一些观点,我想我可以分享我当时所做的事情来最终解决它(几年前我已经在问题的评论部分发布了这个)。
我能够通过使用-Xbootclasspath/a:选项将该 jar 文件包含在引导加载程序类路径中来解决此问题。但无论如何我不喜欢这个解决方案。
| 归档时间: |
|
| 查看次数: |
1511 次 |
| 最近记录: |