我有一个java程序,我需要将一个长度为8k字符的参数传递给它的main方法。因此,当我尝试执行此程序传递该参数时,它只是不执行,但没有显示错误消息。如何正确执行该程序?
答案 0 :(得分: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 :(得分:2)
最佳解决方案是将此8k参数存储在文件中,并将文件名作为参数传递。然后在main方法中打开此文件并读取8k字符。