我构建了一些Java桌面应用程序,它们都引用了我也制作的常见Java类库。我在Netbeans之外运行此设置时遇到问题。我将所有的jar(库和程序)复制到一个文件夹中,但是当我尝试运行任何程序时,他们崩溃说他们找不到公共库中的某些类。
我之前从未尝试过这种情况......我做错了什么?我打赌它与类路径有关,我正在研究它。这是错误消息:
D:\LAB\FIUBA\Stock84885\bin>java -jar Stock84885OrderReceiver.jar
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: core/ILogger
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: core.ILogger
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 7 more
(ILogger是公共类库中的一个类)。
答案 0 :(得分:1)
在IDE外部执行程序时,应该在类路径中包含所有依赖项jar。
-cp <class search path of directories and zip/jar files>
试试这个:
java -cp "lib/*" com.example.Main
将lib /替换为包含依赖项jar的目录,将com.example.Main替换为包含main方法的类。
确保文件Stock84885OrderReceiver.jar包含在类路径中