Java程序在eclipse中执行但不在终端中执行

时间:2014-06-29 09:46:16

标签: java eclipse maven

我正在使用Eclipse和Eclipse Maven插件(m2e)。

我的java程序从eclipse接口编译并正确运行,但我无法编译并从终端运行它。

我的Eclipse设置:

我正在使用两个第三方API,在我添加的eclipse构建路径中

  1. “/ home / syed / workspace / FirstMaven / target / resources / fuse-jna-master / build / classes”(作为外部类文件夹)
  2. “/ home / syed / workspace / FirstMaven / target / resources / apache-jena-2.11.1 / lib”(作为外部罐子)
  3. 包装:

    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"
    

    请指导我如何正确运行我的程序

1 个答案:

答案 0 :(得分:1)

JVM无法从PATH获取库。它使用特殊的环境变量CLASSPATH,它可以包含Unix上的冒号或Windows上用分号分隔的目录或jar文件列表。

因此,只需定义CLASSPATH并将引用放在那里的所有库中。

在运行java时,或者(以及更好的恕我直言)使用命令行开关-classpath(或其别名-cp):

java -cp mylib1.jar:mylib2.jar com.mycompany.Main