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

无法识别的选项:仅在Windows上使用ProcessBuilder的-CP

郗河
2023-03-14

因此,我正在使用一个跨平台引导程序,它在OSX/Linux上正常工作,但在Windows中返回以下错误消息:

错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。无法识别的选项:-cp c:/myapp/realm/bin/launcher.jar;c:/myapp/_jvm/jre/../lib/Tools.jar;c:/myapp/realm/shared/lib/jettyutil-8.1.4.v20120524.jar

c:/myapp/_jvm/jre\bin\java-javaagent:c:/myapp/realm/bin/spring-agent.jar-cp c:/myapp/realm/bin/launcher.jar;c:/myapp/_jvm/jre/../lib/Tools.jar;c:/myapp/realm/shared/lib/jettyUtil-8.1.4.v20120524.jar

我试过在类路径周围加引号,使用双斜杠等,但没有任何帮助。代码如下:

   String mainClass = args[0];
   String propFile = args[1];
   FileInputStream fis =new FileInputStream(propFile);
   BufferedReader br = new BufferedReader(new InputStreamReader(fis));
   String line = null;
   ArrayList<String> argList = new ArrayList<String>();
   while((line = br.readLine()) != null){
       if(line.startsWith("#"))
           continue;
       String trimmedLine = line.trim();
       if(trimmedLine.isEmpty())
           continue;
       Matcher m = p.matcher(trimmedLine);
       StringBuffer sb = new StringBuffer();
       while(m.find()){
           String content = m.group(1);
           String envContent = System.getenv(content);
           if(envContent == null || envContent.isEmpty())
               envContent = System.getProperty(content);
           m.appendReplacement(sb, envContent);
       }
       m.appendTail(sb);
       if(!sb.toString().startsWith("\"-") && !sb.toString().startsWith("-") && argList.size() > 0)
           argList.set(argList.size()-1, argList.get(argList.size()-1)+File.pathSeparator+sb.toString());
       else argList.add(sb.toString());
   }

   ArrayList<String> cmdList = new ArrayList<String>();
   cmdList.add(System.getenv("JAVA_HOME") + File.separator + "bin" + File.separator + "java");
   cmdList.addAll(argList);
   cmdList.add(mainClass);
   System.out.println(cmdList.toString());
   ProcessBuilder pb = new ProcessBuilder(cmdList);
   new ProcessBuilder(line);
   File f = new File(System.getenv("MY_DIR") + File.separator + "logs" +File.separator + "provider-console.log");
   if(!f.exists())
       f.createNewFile();
   pb.redirectErrorStream(true);
   pb.redirectOutput(f);
   pb.directory(new File(System.getenv("MY_DIR") + File.separator + "bin"));
   Process p = pb.start();

以下是toStringed cmdlist:

[c:/myapp/_jvm/jre\bin\html" target="_blank">java,-javaagent:c:/myapp/realm/bin/spring-agent.jar,-xmx256m,-xms200m,-xss128k,-xx:+useBiasedLocking,-xx:+useNuma,-cp c:/myapp/realm/bin/launcher.jar;c:/myapp/_jvm/jre/../lib/tools.jar;c:/myapp/realm/shared/lib/jettyUtil-8.1.4.v20120524.jar,

共有1个答案

齐志勇
2023-03-14

在args列表中,“-cp”和实际的类路径需要是单独的条目,您当前似乎将它们作为一个由空格分隔的条目。

 类似资料:
  • 我试图使用命令<code>yarn android</code>编译我的react原生代码,但它在终端上显示了这个错误。我正在使用Linux Pop_OS 21.04和Visual Studio代码。 我已经尝试了一些解决方案,但没有一个奏效。提前谢谢你!

  • 我尝试在克隆时更改rootfs dir,如下所示: 但我有一个错误: 然后我尝试使用"-B"选项和"lvm"值在LV中设置rootfs: 我得到了这个错误: 为什么我不能将“-vgname”或“-dir”与“lxc克隆”一起使用<我做错了什么?克隆容器时是否可以更改rootfs dir? PS:我使用Ubuntu14.04和LXC1.0。5.

  • 我正在尝试在我的机器中设置weblogic。我下载自http://www.oracle.com/technetwork/middleware/ias/downloads/wls-main-097127.html. 我的PATH是这样的,C:\Program Files\Java\jdk1.5.0_22\bin; cmd提示符中的Java版本给出了这一点, C: \设置 现在,当我使用oracle文

  • 我在运行Windows 7的同一台机器上安装了Jenkins和Docker ToolBox。在运行Jenkins构建时,除了docker之外,所有命令都可以正常工作。当我尝试使用Jenkins在构建步骤中运行docker命令时,它给我错误。 E: \Jenkins\workspace\docker应用程序 但同样的命令适用于windows命令提示符。任何帮助都将不胜感激。

  • 问题内容: 我有一个新安装的Web应用程序。因为有一个下拉菜单,其中一个选项是。我要做的就是将其更改为。因此,我导航至应用程序文件夹并尝试了以下命令。 我最终遇到以下错误。 鉴于我正在使用 如何在Linux中grep’—‘? 问题答案: 发生这种情况是因为解释是一个选项,而不是要查找的文本。而是使用: 这样,您就可以知道其余的不是命令行选项。 其他选项: 使用: 使用或: 防止打印行(其默认操作)

  • 无法识别的VM选项'maxpermsize=256m'错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。 我读了这篇文章,尝试了所有的方法来解决它,但都无济于事。我确实注意到他的错误与我的有些不同,并认为这可能是为什么我不能用建议的方法解决我的问题。 当我在终端上执行。sh文件时,它打印了: