我正在尝试使用以下代码运行具有本机库和内容的应用程序:
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。
从Java
6开始,“为了特别方便,包含基名称的类路径元素*
被认为等同于指定扩展名为.jar
或的目录中所有文件的列表.JAR
。有关java
详细信息,请参见命令行选项。
附录:本示例开始JFreeChart
使用提到的通配符功能。
import java.io.BufferedReader;
import java.io.InputStreamReader;
/** @see https://stackoverflow.com/a/15121864/230513 */
public class PBTest {
private static final String baseDir = "/opt/jfreechart/";
public static void main(String[] args) {
ProcessBuilder pb = new ProcessBuilder("java", "-cp",
baseDir + "lib/*:" + baseDir + "jfreechart-1.0.14-demo.jar",
"demo.SuperDemo");
pb.redirectErrorStream(true);
try {
Process p = pb.start();
String s;
// read from the process's combined stdout & stderr
BufferedReader stdout = new BufferedReader(
new InputStreamReader(p.getInputStream()));
while ((s = stdout.readLine()) != null) {
System.out.println(s);
}
System.out.println("Exit value: " + p.waitFor());
p.getInputStream().close();
p.getOutputStream().close();
p.getErrorStream().close();
} catch (Exception ex) {
ex.printStackTrace(System.err);
}
}
}
附录:这是Windows的更改,它需要;
作为路径分隔符。
private static final String baseDir = "C:/Users/Public/JFreeChart/";
public static void main(String[] args) {
ProcessBuilder pb = new ProcessBuilder("java", "-cp",
baseDir + "lib/*;" + baseDir + "jfreechart-1.0.14-demo.jar",
"demo.SuperDemo");
问题内容: 我有两节课: MyApplication 库 该库已被编译为Library.class,并且源代码不再可用。我现在正在尝试从源代码编译MyApplication。MyApplication取决于库。该库的软件包名称为org.myCompany。我尝试将我的类路径设置为以下内容: 产生以下javac编译器错误消息: 所以我将类路径更改为: 产生完全相同的错误消息。 如何设置Windows
我在设置Java开发环境时遇到了一个问题。在过去,我安装了Java,然后安装了IDE,然后开始编写代码。我现在开始设置我的笔记本电脑,使用命令行编译和记事本作为我的代码编辑器。这是我第一次尝试纠正错误。 我运行javac,它创建了我的。类文件没有问题,但是我尝试用java A运行类文件,它抛出了一个错误: c:\工作区 我的类路径设置为C:\Program Files\Java\jdk-14.0.
问题内容: 我一直在尝试运行一个jar文件-我们称它为test.jar-在Unix系统上使用Sybase jconn3.jar。 我创建了一个具有以下内容的MANIFEST.MF文件: 这给出了ClassNotFoundError。$ SYBASE是指向/ opt / sybase13的系统变量;我还尝试了以下方法: 和 但是,如果我将jconn3.jar文件从$ SYBASE / jConnec
问题内容: 我正在尝试重新编译我一直在研究的项目,并且在尝试加载属性文件时始终收到错误消息: 我想这与类路径有关。但是我已经在Properties-> Java build path-> Libraries(外部类)中将路径添加到文件中。我还检查了eclipse生成的.classpath文件,该路径确实存在! 为什么Eclipse找不到正确的路径? 问题答案: 有2个不同的类路径,构建类路径和运行
当我试图运行测试套件时,在Mac上遇到了这个异常,我们在这里使用的是maven项目,今天早上eclipse挂起了,我强制退出,然后重新启动了同样的测试,但后来无法运行测试。我做了刷新、清理、重新安装testNG、用新的eclipse实例重新配置eclipse并导入maven项目,但却得到了同样的异常。相同的maven项目将在其他Mac上运行,请建议这里缺少的任何方法。
我正在尝试为我正在编写的程序使用其他JAR。 我安装了所有必需的文件,并将它们添加到类路径中,但Java无法识别这些包。 我在jar位置之间加了分号,但Java无法识别jar中的包。为什么会这样? 例如,我的类路径如下所示: .; C:\Program Files(x86)\Java\jre7\lib\exts\QTJava.zip;C:\用户\JOE\下载\aseymock-3.2\asymoc