我正致力于提高编码/开发技能,并且是使用Ant的新手。我的目标是能够编译比#34; Hello World"更复杂的程序。从命令行。我试图编译和运行的程序使用存储在API中的库,我想我已经在build.xml文件中包含了正确的路径,代码将编译和jar(当我使用ant compile和ant jar命令时),但是当我运行它时,我得到一个运行时错误。
这是我的Ant构建文件:
Buildfile: /Users/Phil/Documents/Java workspace/DropBoxProgram/build.xml
clean:
[delete] Deleting directory /Users/Phil/Documents/Java workspace/DropBoxProgram/build/classes
compile:
[mkdir] Created dir: /Users/Phil/Documents/Java workspace/DropBoxProgram/build/classes
[javac] Compiling 7 source files to /Users/Phil/Documents/Java workspace/DropBoxProgram/build/classes
jar:
[jar] Building jar: /Users/Phil/Documents/Java workspace/DropBoxProgram/lib/Main.jar
run:
[java] Error: A JNI error has occurred, please check your installation and try again
[java] Exception in thread "main" java.lang.NoClassDefFoundError: com/dropbox/core/DbxException
[java] at java.lang.Class.getDeclaredMethods0(Native Method)
[java] at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
[java] at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
[java] at java.lang.Class.getMethod0(Class.java:3018)
[java] at java.lang.Class.getMethod(Class.java:1784)
[java] at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
[java] at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
[java] Caused by: java.lang.ClassNotFoundException: com.dropbox.core.DbxException
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[java] ... 7 more
[java] Java Result: 1
BUILD SUCCESSFUL
Total time: 1 second
这会产生以下错误:
{{1}}
我真的很感激任何帮助!
答案 0 :(得分:7)
我有同样的错误。事实证明,Eclipse在Eclipse Home(外部ant安装)的Eclipse设置中使用了一个符号链接。
我通过将Eclipse的Ant Home更改为最终位置来解决它。
在Eclipse中Window
- > Preferences
然后Ant
- > Runtime
然后点击右侧的Ant Home...
按钮,选择正确的Ant安装目录。
答案 1 :(得分:1)
您使用设置为dropbox-core-sdk-1.7.7.jar
jar的类路径编译,但您没有运行具有该类路径的代码。您需要对java
任务执行相同操作,否则JVM无法找到第三方类。
<java jar="${jar.dir}/${ant.project.name}.jar" fork="true">
<classpath>
<path location="${jar.dir}/dropbox-core-sdk-1.7.7.jar"/>
<path location="${jar.dir}/jackson-core-2.2.4.jar"/>
</classpath>
</java>