Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法识别Java参数_Java_Jvm_Arguments - Fatal编程技术网

无法识别Java参数

无法识别Java参数,java,jvm,arguments,Java,Jvm,Arguments,我正在尝试从另一个Java进程开始 我的jar,我正在使用ProcessBuilder: File javaHome = new File(System.getProperty("java.home"), "bin"); List<String> javaList = new ArrayList<String>(); ProcessBuilder processBuilder = new ProcessBuilder(); processBuilder.redirect

我正在尝试从另一个Java进程开始 我的jar,我正在使用ProcessBuilder:

File javaHome = new File(System.getProperty("java.home"), "bin");
List<String> javaList = new ArrayList<String>();

ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.redirectErrorStream(true);
processBuilder.directory(serverDir);
{
    javaList.add(javaHome + File.separator + "java");
    javaList.add("-XX:MaxPermSize=512m");
    javaList.add("-Xmx2048M");

    // -Djava.library.path="natives-win-x64/"
    javaList.add(
        String.format(                          
            "-Djava.library.path=\"natives-%s-%s/\"", 
            //Get system os, 
            //Get system arch
        )
    );

    {
        String classPath = new String();
        for (File library : scanLibrary(new File(serverDir, "libraries"))) {
            String libPath = library.getPath();
            classPath += libPath + ";";
        }

        classPath += new File(new File(serverDir, "binary"), "MainJar.jar").getPath();
        javaList.add("-classpath \\\"" + classPath + "\\\" ");
    }

    javaList.add("my.other.jar.main.class");
}
processBuilder.command(javaList);
processBuilder.start();
File javaHome=新文件(System.getProperty(“java.home”),“bin”);
List javaList=newarraylist();
ProcessBuilder ProcessBuilder=新的ProcessBuilder();
processBuilder.redirectErrorStream(true);
processBuilder.directory(serverDir);
{
add(javaHome+File.separator+“java”);
add(“-XX:MaxPermSize=512m”);
add(“-Xmx2048M”);
//-Djava.library.path=“natives-win-x64/”
javaList.add(
字符串格式(
“-Djava.library.path=\“本机-%s-%s/\”,
//获取系统操作系统,
//获取系统拱门
)
);
{
字符串类路径=新字符串();
用于(文件库:scanLibrary(新文件(serverDir,“库”)){
字符串libPath=library.getPath();
classPath+=libPath+“;”;
}
classPath+=新文件(新文件(serverDir,“binary”),“MainJar.jar”).getPath();
add(“-classpath\\\”+classpath+“\\\”);
}
add(“my.other.jar.main.class”);
}
命令(javaList);
processBuilder.start();
错误:无法创建Java虚拟机。 错误:发生致命异常。程序将退出。 无法识别的选项: -类路径“C:\absulte\Path\Library.jar;C:\absulte\Path2\Library2.jar;C:\absulte\Path3\Library3.jar”

您将
--classpath“…”
作为单个参数传递。我认为你应该把它具体化为两个论点:

javaList.add("-classpath");
javaList.add("\\\"" + classPath + "\\\");
(顺便说一句,我不清楚您是否真的需要所有这些反斜杠……您可能会发现只要
javaList.add(classPath)
就足够了,或者
javaList.add(“\”“+classPath+”\”)