gpt4 book ai didi

java - Jar 文件无法运行,提取的类运行正常

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:50 24 4
gpt4 key购买 nike

如果之前有人问过这个问题,我深表歉意,但我找不到任何相同的东西。

我创建了一个简单的 jar(myFailingJar.jar) 文件,其中包含两个类,一个是主类,另一个是从另一个 jar 文件 (CCJAPI.jar) 访问一个类及其函数的简单类。

主类只是实例化简单类,简单类加载一个共享库对象并调用 CCJAPI.jar 中的一个跨 JNI 的函数。

当使用此命令作为 jar 文件运行时,它会失败,因为它无法在类路径上的 CCJAPI.jar 中找到类:java -classpath/home/scott:/home/scott/CCJAPI.jar -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 文件外部运行它。这一定是我无法弄清楚的某种类型的类路径或路径问题。任何帮助将不胜感激。

最佳答案

您可能没有创建正确的 jar 具有正确的依赖项。使用 eclipse 导出(右键单击项目 --> 导出),这也将创建所需的 list 文件。

Export jar

使用它应该会有帮助。

关于java - Jar 文件无法运行,提取的类运行正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13733147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com