使用引用 jar 中的 class 时未找到 Class
Class not found when using class from referenced jar
我构建了一些 Java 桌面应用程序,它们都引用了我也制作的一个通用 Java class 库。我在 Netbeans 之外 运行 设置此设置时遇到问题。我将所有 jar(库和程序)复制到某个文件夹中,但是当我尝试 运行 任何程序时,它们崩溃说它们无法从公共库中找到一些 class。
我以前从未尝试过这种情况...我做错了什么?我敢打赌它与 class 路径有关,我正在调查。这是错误消息:
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 是来自通用 class 库的 class)。
在 IDE 之外执行程序时,您应该在 class 路径中包含所有依赖项 jar。
-cp <class search path of directories and zip/jar files>
试试这个:
java -cp "lib/*" com.example.Main
将 lib/ 替换为包含依赖项 jar 的目录,将 com.example.Main 替换为包含主要方法的 class。
确保文件 Stock84885OrderReceiver.jar 包含在 class 路径
中
我构建了一些 Java 桌面应用程序,它们都引用了我也制作的一个通用 Java class 库。我在 Netbeans 之外 运行 设置此设置时遇到问题。我将所有 jar(库和程序)复制到某个文件夹中,但是当我尝试 运行 任何程序时,它们崩溃说它们无法从公共库中找到一些 class。
我以前从未尝试过这种情况...我做错了什么?我敢打赌它与 class 路径有关,我正在调查。这是错误消息:
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 是来自通用 class 库的 class)。
在 IDE 之外执行程序时,您应该在 class 路径中包含所有依赖项 jar。
-cp <class search path of directories and zip/jar files>
试试这个:
java -cp "lib/*" com.example.Main
将 lib/ 替换为包含依赖项 jar 的目录,将 com.example.Main 替换为包含主要方法的 class。
确保文件 Stock84885OrderReceiver.jar 包含在 class 路径
中