我已将我的应用程序从 Eclipse 导出为一个大包,因此它使用 Eclipse 加载程序。我已经使用 install.bat 文件通过 procrun 安装了它,最重要的几行如下所示:
set PR_CLASSPATH=C:\somepath\ECGIServer.jar
set PR_LIBRARYPATH=C:\somepath\native\lunaLibrary.dll
set PR_STARTMODE=jvm
set PR_STOPMODE=jvm
显然还有更多,并且服务确实运行。在 ECGIServer.jar 文件中,这是 Manifest 文件:
Manifest-Version: 1.0
Rsrc-Class-Path: ./ commons-codec-1.6.jar stax-api-1.0-2.jar LunaProvider.jar
Class-Path: .
Rsrc-Main-Class: ecgi.encrypter.ECgiServer
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
有更多的 jar 可以列出,但要写的太多了。无论如何,当我在命令行运行它(ECGIServer.jar)时,它工作得很好。当我将它作为服务运行时,它会一直运行,直到我尝试创建 LunaProvider 的实例。一旦应用程序创建了 LunaProvider 的实例,我得到:
java.lang.NoClassDefFoundError: com/safenetinc/luna/provider/LunaProvider
如您所见,LunaProvider 是一个 ThridParty 库,它刚刚从我的 Eclipse 设置中引入。