我正在使用Eclipse和Eclipse Maven插件(m2e)。
我的java程序从eclipse接口编译并正确运行,但我无法编译并从终端运行它。
我的Eclipse设置:
我正在使用两个第三方API,在我添加的eclipse构建路径中
包装:
package org.organization.upesh.FirstMaven;
我的项目路径:
syed@ubuntu:~/workspace/FirstMaven$
源代码目录路径:
syed@ubuntu:~/workspace/FirstMaven/src/main/java/org/organization/upesh/FirstMaven$
课程目录:
syed@ubuntu:~/workspace/FirstMaven/target/classes/org/organization/upesh/FirstMaven$
当我尝试通过以下命令
执行myProgram时syed@ubuntu:~/workspace/FirstMaven/target/classes$ java org.organization.upesh.FirstMaven.myProgram
它给了我这些错误:
Exception in thread "main" java.lang.NoClassDefFoundError: net/fusejna/util/FuseFilesystemAdapterFull
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Caused by: java.lang.ClassNotFoundException: net.fusejna.util.FuseFilesystemAdapterFull
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 13 more
但我的测试程序不使用第三方API通过以下方式正确运行:
syed@ubuntu:~/workspace/FirstMaven/target/classes$ java org.organization.upesh.FirstMaven.test
我认为myProgram没有执行,因为我正在使用两个API(类文件夹和jar文件夹)。
我已经将API的类和jar文件夹的路径添加到/ etc / environment(下面给出)并且休息了我的计算机,但仍然是同样的错误
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/syed/workspace/FirstMaven/target/resources/apache-jena-2.11.1/lib:/home/syed/workspace/FirstMaven/target/resources/fuse-jna-master/build/classes"
请指导我如何正确运行我的程序
答案 0 :(得分:1)
JVM无法从PATH
获取库。它使用特殊的环境变量CLASSPATH
,它可以包含Unix上的冒号或Windows上用分号分隔的目录或jar文件列表。
因此,只需定义CLASSPATH
并将引用放在那里的所有库中。
在运行java时,或者(以及更好的恕我直言)使用命令行开关-classpath
(或其别名-cp
):
java -cp mylib1.jar:mylib2.jar com.mycompany.Main