java创建库以供分发

时间:2015-09-06 10:12:27

标签: java jar

请原谅我,我是用翻译写作的

我已经阅读了很多关于这个主题的帖子,但我无法理解这个操作。

在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

非常感谢所有

1 个答案:

答案 0 :(得分:0)

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

我建议使用Maven,因为这是一个更好的整体解决方案,但你也可以做到这一点。

右键单击您的项目,选择Export-> Java-> Runnable Jar文件,选择将所需库提取到JAR中,然后正常填写其余字段。

此方法要求Eclipse知道依赖关系,如果您的代码编译干净,而另一个库也是Eclipse项目,那么这就是它。