我正在尝试使用以下代码运行具有本机库和内容的应用程序:
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。