我有一個java程序,我需要傳遞給它的主方法一個長度爲8k個字符的參數。所以當我嘗試執行該程序傳遞該參數時,它只是不執行,但沒有顯示錯誤消息。我該如何正確執行該程序?參數長度太長
Q
參數長度太長
0
A
回答
2
最好的解決方案是將此8k參數存儲在文件中,並將文件名作爲參數傳遞。然後在你的主要方法中,你應該打開這個文件並閱讀8k個字符。
4
你的shell可能不允許執行一個具有超出系統限制的參數列表的程序。假設可以修改你的java程序,你應該添加一個選項來從文件而不是命令行獲取參數的值。
您也可以編寫一個包裝,將調用您main
:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class MyWrapper
{
public static void main(String[] args) throws Exception
{
FileReader reader = new FileReader(args[0]);
//assuming the data is the first argument
args[0] = getStringFromReader(reader);
//invoke real main
MyClass.main(args);
}
public static String getStringFromReader(Reader reader) throws IOException
{
final int BUFFER_SIZE = 4096;
char[] buffer = new char[BUFFER_SIZE];
Reader bufferedReader = new BufferedReader(reader, BUFFER_SIZE);
StringBuffer stringBuffer = new StringBuffer();
int length = 0;
while ((length = bufferedReader.read(buffer, 0, BUFFER_SIZE)) != -1)
{
stringBuffer.append(buffer, 0, length);
}
reader.close();
return stringBuffer.toString();
}
}
然後,你只需要調用java這樣的:
java MyWrapper my-file-containing-8k-data [other-args...]
相關問題
- 1. al.exe參數太長
- 2. codesign:「參數列表太長」
- 3. ocamldep:參數列表太長
- 4. 參數列表太長 - Unix
- 5. NGINX錯誤「參數太長」
- 6. 彈簧參數太長
- 7. subprocess.Popen參數列表太長
- 8. grep:參數列表太長
- 9. Echo:參數列表太長
- 10. bash - 參數列表太長
- 11. HQL:參數長度
- 12. 元組長度何時太長?
- 13. webApi參數數據長度
- 14. Javascript函數 - 參數長度
- 15. xp_cmdshell查詢長度太大
- 16. bootstrap選項寬度太長
- 17. 樹形圖高度太長
- 18. R - 參數長度爲零
- 19. 長度的參數0
- 20. Android進度條長參數
- 21. 參數的長度爲零
- 22. 無效長度參數
- 23. base64編碼長度參數
- 24. 可變長度參數
- 25. Js數組長度增加太早
- 26. 錯誤:「grep:參數列表太長」
- 27. 捲曲參數列表太長錯誤
- 28. 獲取「參數列表太長」錯誤
- 29. Rails中的參數列表太長了
- 30. Impala-shell命令參數列表太長
您可以顯示程序?另外,你是如何執行它? (從另一種方法,從控制檯等) – 2010-10-21 15:39:05
8000個字符的參數?你應該確定你的程序的設計。 – 2010-10-21 15:41:02
我從控制檯執行它。 – Dorr 2010-10-21 15:44:07