2014-06-29 73 views
0

我使用Eclipse和Eclipse Maven Plugin(m2e)。Java程序在eclipse中執行,但不在終端中

我的java程序編譯並從eclipse界面正確運行,但我無法從終端編譯和運行它。

我的Eclipse環境:

我用兩個第三方的API,爲此,在Eclipse構建路徑,我添加

  1. 「/家/賽義德/工作區/ FirstMaven /目標/資源/保險絲 - JNA主/建造/類」 (如外部類文件夾)
  2. 「/home/syed/workspace/FirstMaven/target/resources/apache-jena-2.11.1/lib」 (如外部罐)

套餐:

package org.organization.upesh.FirstMaven; 

我的項目路徑:

[email protected]:~/workspace/FirstMaven$ 

源代碼目錄路徑:

[email protected]:~/workspace/FirstMaven/src/main/java/org/organization/upesh/FirstMaven$ 

classes目錄:

[email protected]:~/workspace/FirstMaven/target/classes/org/organization/upesh/FirstMaven$ 

當我嘗試通過執行myProgram以下命令

[email protected]:~/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我的測試程序中通過正常運行:

[email protected]:~/workspace/FirstMaven/target/classes$ java org.organization.upesh.FirstMaven.test 

我認爲myProgram沒有執行,因爲我使用了兩個API(class文件夾和jar文件夾)。

我已經加入的API來的/ etc /環境(如下所示)的類和JAR文件夾的路徑和休息我的電腦,但仍是同樣的錯誤

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

JVM不會從PATH獲取庫。它使用特殊的環境變量CLASSPATH,該變量可以包含由Unix上的冒號或Windows上的分號分隔的目錄或jar文件的列表。

因此,只需定義CLASSPATH並將參考引用到您的所有庫中。

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

'賽@ ubuntu的:〜/工作區/ FirstMaven /目標/類$ java的org.organization

Aleternatively(和IMHO更好)運行Java當使用命令行開關-classpath(或其別名-cp) .upesh。FirstMaven.SFS_360'給出了與我上面提到的問題相同的錯誤,並且包含路徑爲'syed @ ubuntu:〜/ workspace/FirstMaven/target/classes $ java -cp/home/syed/workspace/FirstMaven/target/resources/fuse-jna-master/build/classes org.organization.upesh.FirstMaven.SFS_360'然後給出新的錯誤 '錯誤:無法找到或加載主類org.organization.upesh.FirstMaven.SFS_360' –

+0

如果你的主類在jar中,那麼jar必須在類路徑中。如果它是一個不在jar中的類文件,那麼它必須位於與其包相對應的目錄中,並且該包的根目錄必須位於類路徑中。 – arcy

相關問題