-javaagent:被识别为命令的选项
-javaagent: option recognised as a command
在我正在编写的应用程序中,我需要使用 javaagent 选项来调用与当前 jar 文件位于同一文件夹中的外部 jar。当我 运行 来自 jar 文件的代码时,我被告知: "Error: Could not find or load main class -javaagent:" 但是当我从批处理文件 运行 中使用它时,它正常工作。
我正在使用 ProcessBuilder 启动应用程序:
String java = System.getProperty("java.home") + File.separatorChar + "bin" + File.separatorChar +"java.exe";
File transagent = new File(pluginDir + File.separatorChar + "TransAgent.jar");
String doublequote = String.valueOf('"');
List<String> commandlist = new ArrayList<String>();
commandlist.add(java);
commandlist.add(" -javaagent:");
commandlist.add(doublequote);
commandlist.add(transagent.getAbsolutePath());
commandlist.add(doublequote);
for(int i = 0; i < commandlist.size(); i++){
String part = commandlist.get(i);
System.out.print(part);
}
System.out.println();
ProcessBuilder pb = new ProcessBuilder();
pb.command(commandlist);
pb.redirectError(Redirect.appendTo(errorfile));
pb.redirectOutput(Redirect.appendTo(logfile));
try {
pb.start();
} catch (IOException e) {
e.printStackTrace();
}
但是,当我转到错误文件时,我看到 "Error: Could not find or load main class -javaagent:"
如果选项无效,通常会抛出此错误,但我已经检查了 dash to work 文件。我把从应用程序打印的内容放在一个批处理文件中,它运行良好。为什么?
您可以试试下面的代码:
ProcessBuilder pb = new ProcessBuilder("java", "-javaagent:"+transagent.getAbsolutePath(), "YouMainClass");
pb.redirectError(Redirect.appendTo(errorfile));
pb.redirectOutput(Redirect.appendTo(logfile));
try
{
pb.start();
}
catch(IOException e)
{
e.printStackTrace();
}
在我正在编写的应用程序中,我需要使用 javaagent 选项来调用与当前 jar 文件位于同一文件夹中的外部 jar。当我 运行 来自 jar 文件的代码时,我被告知: "Error: Could not find or load main class -javaagent:" 但是当我从批处理文件 运行 中使用它时,它正常工作。
我正在使用 ProcessBuilder 启动应用程序:
String java = System.getProperty("java.home") + File.separatorChar + "bin" + File.separatorChar +"java.exe";
File transagent = new File(pluginDir + File.separatorChar + "TransAgent.jar");
String doublequote = String.valueOf('"');
List<String> commandlist = new ArrayList<String>();
commandlist.add(java);
commandlist.add(" -javaagent:");
commandlist.add(doublequote);
commandlist.add(transagent.getAbsolutePath());
commandlist.add(doublequote);
for(int i = 0; i < commandlist.size(); i++){
String part = commandlist.get(i);
System.out.print(part);
}
System.out.println();
ProcessBuilder pb = new ProcessBuilder();
pb.command(commandlist);
pb.redirectError(Redirect.appendTo(errorfile));
pb.redirectOutput(Redirect.appendTo(logfile));
try {
pb.start();
} catch (IOException e) {
e.printStackTrace();
}
但是,当我转到错误文件时,我看到 "Error: Could not find or load main class -javaagent:"
如果选项无效,通常会抛出此错误,但我已经检查了 dash to work 文件。我把从应用程序打印的内容放在一个批处理文件中,它运行良好。为什么?
您可以试试下面的代码:
ProcessBuilder pb = new ProcessBuilder("java", "-javaagent:"+transagent.getAbsolutePath(), "YouMainClass");
pb.redirectError(Redirect.appendTo(errorfile));
pb.redirectOutput(Redirect.appendTo(logfile));
try
{
pb.start();
}
catch(IOException e)
{
e.printStackTrace();
}