我apoligize如果已經問過,但我一直無法找到任何是一樣的。Jar文件無法運行,提取類運行良好
我創建了一個簡單罐(myFailingJar.jar)文件與兩類主要類和一個簡單的類訪問一個類和從另一個jar文件(CCJAPI.jar)其功能。
主類只實例化了簡單的類中,簡單的類加載共享庫對象,並調用該跨越JNI內CCJAPI.jar的功能。
當與此命令,因爲它無法找到CCJAPI.jar一類是在classpath失敗jar文件運行: 的java -classpath /home/scott:/home/scott/CCJAPI.jar罐子myFailingJar.jar
開始
Exception in thread "main" java.lang.NoClassDefFoundError: ccjni/DeviceManager
at DetachedManager.DetachedDeviceManager.startManager(DetachedDeviceManager.java:24)
at DetachedManager.Main.main(Main.java:19)
Caused by: java.lang.ClassNotFoundException: ccjni.DeviceManager
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)
如果我提取myFailingJar.jar文件的內容,並使用此命令它的工作原理,其據我可以告訴只是去提取的類文件運行並運行: 的java -classpath /home/scott:/home/scott/CCJAPI.jar DetachedManager.Main
開始 ** **開始成功 = - 現在要崩潰
這裏既是源文件的內容:
簡單類的主要
package DetachedManager;
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
DetachedDeviceManager devMgr = new DetachedDeviceManager();
if(devMgr.startManager())
{
System.out.println("Success = - Going to crash now");
}
}
}
來源來源:
package DetachedManager;
import ccjni.DeviceManager;
public class DetachedDeviceManager {
{
System.load("/usr/lib/libccJNI.so");
}
public boolean startManager()
{
System.out.println("Starting");
DeviceManager.start();
System.out.println("** Started ** ");
return true;
}
}
唯一的區別是,一個是從jar文件中運行編譯後的類,另一個在jar文件之外運行。它一定是某種我無法想象的類路徑或路徑問題。任何幫助將非常感激。
你有清單文件嗎? – ApproachingDarknessFish
是指向主。 Apparenlty我剛纔發現了這個問題。它是清單文件。如果我在清單中包含類路徑,它將起作用。如果僅在命令行中指定,則不會。 – CoderG
謝謝你指點我正確的方向。我最後不得不到類路徑添加到即使是在命令行上指定的路徑清單文件。 這裏是失敗的表現: 清單-版本:1.0 創建-者:1.6.0_0(Sun微系統公司) 主類:DetachedManager.Main 這裏是成功的體現 清單,版本:1.0 創建者:1.6.0_0(Sun Microsystems Inc.) 類路徑:lib/CCAPI.jar Main-Class:DetachedManager.Main – CoderG