当前位置: 首页 > 知识库问答 >
问题:

Java参数无法识别

陶泳
2023-03-14

我试图从我的jar启动另一个Java进程,我使用的是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();

错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。无法识别的选项:-类路径“C:\absoulte\path\library.jar;C:\absoulte\path2\library2.jar;C:\absoulte\path3\library3.jar”

共有1个答案

鲁彬炳
2023-03-14

您将--classpath“...”作为单个参数传递。我认为您应该将其指定为两个参数:

javaList.add("-classpath");
javaList.add("\\\"" + classPath + "\\\");

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

 类似资料:
  • 问题内容: Optparse,旧版本只是忽略所有无法识别的参数并继续执行。在大多数情况下,这不是理想的,已在argparse中进行了更改。但是在某些情况下,您想忽略任何无法识别的参数并解析您指定的参数。 例如: 反正有覆盖吗? 问题答案: 更换 与 例如,

  • 当我尝试在Pandas的applymap函数中使用参数“na_action”时,我得到了以下错误: TypeError:applymap()获得意外的关键字参数“na_action” 例子: 类型错误。回溯(最近一次呼叫最后一次) 在1个显示器中显示(df\U复制) 2个df。iloc[0,0]=pd。NA ---- TypeError:applymap()获得意外的关键字参数“na_action

  • 问题内容: 我正在使用Hibernate / JPA执行本地PostGIS查询。这些查询的问题在于它们需要的参数不是经典的X =“值”形式。 例如,以下几行崩溃 但是,以下查询有效: (但是它很容易出现SQL注入…) 有谁知道如何在这种情况下使用? 问题答案: 未为本机查询定义使用命名参数。根据JPA规范(第3.6.3节“ 命名参数”): 命名参数遵循第4.4.1节中定义的标识符规则。命名参数的使

  • 我现在正在学习Meteor/Apollo/GraphQL的教程,在使用参数/变量进行突变时遇到了巨大的麻烦。下面是我的代码和一些注释! 当我尝试将查询发送到服务器时,我收到一个 http 400 错误,并且我收到以下 graphql 错误:“类型为”突变“的字段”createResolution“上的未知参数”名称”。 创建分辨率在我的 graphiQL 中可用,但在文档中没有显示任何参数。 教程

  • 关于如何使用传递的参数的任何线索。

  • 我正在尝试使用camel-actiemq依赖关系,并设置一个正在监听actiemq队列的服务。当我试图设置骆驼路由中的唯一连接时,我使用的endpoint是: “activemq:mailq?用户名=管理员 我的问题是activemq依赖关系正在解除故障切换“localhost:61616”的约束,因为它没有重新计算brokerURL参数。 我正在尝试连接到一个部署在openShift服务器上的队