2015-09-06 28 views
1

对不起,我正在翻译java创建分发库

我已阅读了许多关于此主题的帖子,但无法理解操作。在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 ... 

手不改变试任何东西,当我尝试运行使用我的库的jar文件时,仍然存在上述错误。

我的问题是:我怎么能安装我的图书馆系统,以便它可以用命令启动程序

java -jar test.jar 

非常感谢所有

回答

0

我认为这将是更容易嵌入您的库JAR放在目标JAR中,因此在应用程序启动之前您不需要使用类加载器。

我建议使用Maven来做这件事,因为它是一个更好的整体解决方案,但您也可以这样做。

右键单击您的项目,选择Export-> Java-> Runnable Jar file,选择Extract Required Library into JAR,然后正常填写其余字段。

此方法要求Eclipse已知依赖关系,如果您的代码干净地编译而另一个库也是Eclipse项目,则这将是已知的。