2017-02-01 14 views
0

我有以下代碼類參數丟失的最終引用

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中使用標誌,它必須在引號內。 我必須包括這給了我NetBeans中的錯誤消息「沒有結束的字符串字面」行

myFlag= myFlag.concat("""); 

。如何擺脫整齊的錯誤,甚至更好,我怎樣才能得到最後的報價呢?因爲你的IDE會認爲你在第二個引號將關閉字符串 感謝

+0

@MikaelF你是對固定用「\」,而不是」 「」」。但我認爲有人可以告訴我如何不放鬆最終的「我不明白爲什麼它消失了,我有其他的字符串標誌在進程建設者,保留他們的最後引號 – Guigui

+0

'stringFlag'和' myFlag'的值相同嗎?如果是這樣,是否還有其他操作可能會改變你的'String'?由於'String'是不可變的,你可以檢查你的ProcessBuilder是否仍然使用與它相同的'String'實例在兩個衝突的字符串中使用'=='運算符,這樣,在調試檢查運行的時候,你會看到它是否被修改過了(顯然是這樣) – MikaelF

+0

@MikaelF道歉,stringFlag = myFlag,那是另一個編輯錯誤,現在只有一個變量:myFlag,現在更正了 – Guigui

回答

0

現在的問題已經消失了:-)那一定是在NetBeans和Java ... 不幸的是,我不能重現該問題的錯誤,我不知道什麼時候它固定本身。 如果遇到同樣的問題,我建議: 1 - 重新啓動計算機, 2,重新啓動Netbeans的, 3註釋掉

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

會引起問題。

試圖逃避第二個引號。

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

在processbuilder constructior中添加逗號應該可以解決此問題。 ProcessBuilder pb = new ProcessBuilder(「我的應用程序的路徑」,「variousflags」,myFlag) ; – MayurB

+0

@Stefan Lindner謝謝,這就是我所需要的,我以前試過它,它不會工作,我必須使用/而不是\。 – Guigui

+0

@ MayurB對不起,我已經有了,在我的pb定義中,我忘了把它們在我的代碼中,現在會更新。 – Guigui