正确创建Java JAR

时间:2015-06-02 19:34:14

标签: java intellij-idea jar

我使用IntelliJ创建Java WorldWind应用程序的变体。当我在IntelliJ中构建JAR工件时,我可以在JAR的顶级目录中看到我的DLL和SO。但是,当我尝试执行它时,它抱怨它无法看到JAR内部的这些库(尝试了Windows和Linux,这就是我包含SO和DLL的原因)。

我需要做些什么才能让它看到这些库?

这是我第一次创建可执行JAR,对于模糊不清,我不太确定哪些信息很重要。请问我有什么必要的问题来更好地理解这个问题,我会回答他们。

编辑:

Catched FileNotFoundException: D:\code\Animator\animator\out\artifacts\Animator_jar\Animator-natives-windows-i586.jar (The system cannot find the file specified), 
while addNativeJarLibsImpl(
    classFromJavaJar class com.jogamp.common.os.Platform, 
    classJarURI jar:file:/D:/code/Animator/animator/out/artifacts/Animator_jar/Animator.jar!/com/jogamp/common/os/Platform.class, 
    nativeJarBaseName Animator-natives-windows-i586.jar): 
    [ file:/D:/code/Animator/animator/out/artifacts/Animator_jar/Animator.jar -> 
      file:/D:/code/Animator/animator/out/artifacts/Animator_jar/ ] + 
    Animator-natives-windows-i586.jar -> 
    slim: jar:file:/D:/code/Animator/animator/out/artifacts/Animator_jar/Animator-natives-windows-i586.jar!/

Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: D:\code\Animator\animator\out\artifacts\Animator_jar\gluegen-rt.dll
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.load0(Unknown Source)
    at java.lang.System.load(Unknown Source)
    at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:551)
    at com.jogamp.common.jvm.JNILibLoaderBase.access$000(JNILibLoaderBase.java:64)
    at com.jogamp.common.jvm.JNILibLoaderBase$DefaultAction.loadLibrary(JNILibLoaderBase.java:96)
    at com.jogamp.common.jvm.JNILibLoaderBase.loadLibrary(JNILibLoaderBase.java:414)
    at com.jogamp.common.os.DynamicLibraryBundle$GlueJNILibLoader.loadLibrary(DynamicLibraryBundle.java:388)
    at com.jogamp.common.os.Platform$1.run(Platform.java:209)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.jogamp.common.os.Platform.<clinit>(Platform.java:179)
    at javax.media.opengl.GLProfile.<clinit>(GLProfile.java:82)
    at au.gov.ga.worldwind.animator.application.AnimatorConfiguration.<clinit>(AnimatorConfiguration.java:46)
    at au.gov.ga.worldwind.animator.application.Animator.<clinit>(Animator.java:205)

就JAR的结构而言,我不知道如何在7-Zip中展示JAR的截图:

JAR Contents

1 个答案:

答案 0 :(得分:0)

在图像中我们可以看到jar的名称是:Animator.jar,但是intelliJ正在搜索:Animator-natives-windows-i586.jar。您必须转到模块设置 - 工件并将OutputDirectory更改为:D:\ code \ Animator \ animator \ out \ artifacts \ Animator_jar 然后检查工件的名称以匹配路径和文件名。  enter image description here

我添加的图像就是一个例子。