请原谅我,我是用翻译写作的
我已经阅读了很多关于这个主题的帖子,但我无法理解这个操作。
在Windows上使用Eclipse编写Java 1.8
我创建了一个项目(用作库),其中包含一个传奇的类,然后由其他项目使用。我导出了项目"图书馆"作为JAR并包含在其他项目中,在Eclipse中运行。
现在我想移动我从项目中导出的JAR和在Centos中用作库的JAR,但是有多少测试总是出现这个错误,找不到类(在我写的图书馆)
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: zjlib/exceptions/CLIOptionArgumentValueRequiredException
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: zjlib.exceptions.CLIOptionArgumentValueRequiredException
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
库文件中的Centos(名为zjlib.jar)位于/ home / gexy / lib目录中,我设置了valiabile CLASSPATH环境。使用命令
java -XshowSettings: properties
我看到CLASSPATH在输出中设置正确,实际上我有这个
[...]
java.class.path = /home/gexy/lib/jzlib.jar
[...]
我也尝试过使用命令
java -cp ...
Hand不会改变任何内容,当我尝试运行使用我的库的jar文件时,我仍然有上述错误。
我的问题是:如何在系统中安装我的库,以便它可以使用命令启动我的程序
java -jar test.jar
非常感谢所有
答案 0 :(得分:0)
我认为将库JAR嵌入目标JAR会更容易,因为在应用程序启动之前,您不需要使用类加载器。
我建议使用Maven,因为这是一个更好的整体解决方案,但你也可以做到这一点。
右键单击您的项目,选择Export-> Java-> Runnable Jar文件,选择将所需库提取到JAR中,然后正常填写其余字段。
此方法要求Eclipse知道依赖关系,如果您的代码编译干净,而另一个库也是Eclipse项目,那么这就是它。