类参数缺少最终引号

class parameter missing final quote

提问人:Guigui 提问时间:2/1/2017 最后编辑:Guigui 更新时间:2/3/2017 访问量:128

问:

我有以下代码

public class MyClass {
   public MyClass (String myString){
   myFlag=myString
   }
   ProcessBuilder pb = new ProcessBuilder("Path to my application",  "variousflags", myFlag)
   Process p = pb.start();
   } 

当我跑步时

myClass("worddocument.doc") 

PB 不启动。在调试 MyClass 时,我注意到:

 myFlag ="worddocument.doc

没有最终报价。要使标志在 ProcessBuilder 中起作用,它必须在引号内。 我必须包括这一行

myFlag= myFlag.concat(""");

这给了我Netbeans“unclosed string literal”中的错误消息。如何摆脱 neatbeans 错误,或者更好的是,我怎样才能取回最终报价? 谢谢

Java 字符串 参数传递 引号 ProcessBuilder

评论

0赞 Guigui 2/1/2017
@MikaelF 你是对的,它用“\”而不是“”来修复。但我想有人可以告诉我如何不失去决赛“首先。我不明白为什么它会消失。我在流程构建器中还有其他字符串标志,它们保留了它们的最终引号。
0赞 MikaelF 2/2/2017
和相同的值?如果是这样,是否有其他操作可能会改变您的?由于是不可变的,您可以检查是否仍在使用与在两个冲突字符串上使用运算符传递的实例相同的实例。这样,在调试检查运行时,您将看到它是否已被修改(显然已被修改)。stringFlagmyFlagStringStringProcessBuilderString==
0赞 Guigui 2/2/2017
@MikaelF抱歉,stringFlag = myFlag,这是另一个编辑错误。现在只有一个变量:myFlag。现已更正。
0赞 Guigui 2/2/2017
@MikaelF myFlag 在我的代码中没有被修改,在必须添加最终引号并删除空格之前。我只是仔细检查了一下。
0赞 Guigui 2/2/2017
最后的报价又回来了!我注释掉了几行来做一个测试,并意识到这个过程是在没有添加最终报价的情况下开始的。这一定是 java 或 netbeans 错误......

答:

2赞 Stefan Lindner 2/1/2017 #1
stringFlag= stringFlag.concat(""");

将导致问题,因为您的 IDE 认为您在第二个引号处关闭了 String。

尝试转义第二个引号。

stringFlag= stringFlag.concat("\"");

评论

0赞 MayurB 2/1/2017
在 processbuilder 构造函数中添加逗号应该可以解决这个问题。ProcessBuilder pb = new ProcessBuilder(“我的应用程序的路径”, “variousflags” ,myFlag);
0赞 Guigui 2/1/2017
@Stefan Lindner:谢谢,这就是我需要的。我以前试过,但它不起作用,我一定是用 / 而不是 \。
0赞 Guigui 2/1/2017
@MayurB对不起,我已经有了,在我的 pb 定义中,我忘了把它们放在我的代码中。现在将更新。
0赞 Guigui 2/3/2017 #2

问题现在已经消失了:-)这一定是 netbeans 或 java 中的错误...... 不幸的是,我无法重现该问题,并且我不确定它何时自行修复。 如果遇到同样的问题,我建议: 1-重新启动计算机, 2-重新启动 Netbeans, 3-注释掉

myFlag= myFlag.concat("\"");