【发布时间】:2013-02-13 19:52:34
【问题描述】:
我正在尝试使用以下代码运行具有本机库和内容的应用程序:
ProcessBuilder pb = new ProcessBuilder("javaw",
"-classpath",
binDir + "polyrd.jar;" + binDir + "lwjgl.jar;" + binDir + "lwjgl_util.jar;",
"-Djava.library.path=" + nativesDir,
"monster860.polyrd.Polyrd");
我尝试在命令行中执行等效操作,将其更改为 -cp,仅使用 bindir 而不是 binDir + "polyrd.jar;" + binDir + "lwjgl.jar;" + binDir + "lwjgl_util.jar;",并在 java 和 javaw 之间切换,但无论我做什么,它都给了我:
java.lang.NoClassDefFoundError: monster860/polyrd/Polyrd
Caused by: java.lang.ClassNotFoundException: monster860.polyrd.Polyrd
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
谁能帮忙?
我的操作系统是 Windows Vista。 是的,这些文件确实存在。
这是我得到binDir 和nativesDir 的方法:
public ProcessRunnable(File nativesDir, File binDir) {
try {
this.nativesDir = nativesDir.getCanonicalPath() + File.separator;
this.binDir = binDir.getCanonicalPath() + File.separator;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
编辑: 好吧,当然,它与此完全无关,但下载器只下载文件的前 2 KB。
【问题讨论】:
-
好吧,
binDir是什么,你在什么操作系统上运行,所有这些文件是否真的存在,等等? -
使用 IDE 怎么样?
-
@JonSkeet:必须是所有东西都在同一个目录中。所以他单独保存目录位置并将其添加到此字符串中。我确定它代表保存 jar 文件的文件夹位置
-
你知道
monster860/polyrd/Polyrd类位于哪个jar吗? -
请发布您的确切命令行或脚本