我必须用这一行执行我的程序:
java -DImport=data.txt -Din=input.dat -Dout=output1.dat main.Main
我一直试图弄清楚如何做到这一点但却无法让它真正发挥作用。我正在使用Netbeans,因为我真的没有使用unix终端类路径等等。
public static void main(String[] args) {
String fileIn;
fileIn = System.getProperty ("Import");
}
fileIn由于前一个语句而变为null。
我刚开始使用-DImport = data.txt,在我解决之后我会尝试其他的。
那部分已经完成,谢谢。我会尝试将stdin设置为-Din文件而不是键盘。感谢
我做了你说的cartoonfox,它的打印导入null意味着fileIn没有从System.getProperty接收任何字符串(“导入”);
我也收到了这个警告:
警告:不推荐使用java.io.DataInputStream中的[deprecation] readLine() line = dis.readLine();
我正在使用此页面中的代码:http://www.java-tips.org/java-se-tips/java.io/how-to-read-file-in-java.html因为我不太了解读者:(
答案 0 :(得分:4)
我认为你混淆了两个概念:
java main.MyMain 0 1 2
你的 args 将是:
args [0] = 0
args [1] = 1
args [2] = 2
在你的代码中你混合了两者。删除行
if(args.length == 1)
它会起作用:)
答案 1 :(得分:2)
删除if (args.length == 1)
,因为您没有解析参数,而是设置系统属性。
程序参数跟在主要类之后
main.Main arg1=val arg2=val2
答案 2 :(得分:1)
将-Import = foo视为将“导入”配置选项设置为值“foo”的方法。
只需删除if语句:
public static void main(String[] args) {
String fileIn;
fileIn = System.getProperty ("Import");
System.out.println("Import "+fileIn);
}
BTW我认为Sun选择了-D(而不是其他东西)因为许多C编译器允许你在命令行上用-D设置宏 - 这意味着它是一种设置名为“常量”的方法在命令行上......这与Java中的相似。
我不确定为什么你会为此运行null,所以这里是我编译并运行它的记录 - 输出。你将不得不看看差异你正在做什么和我在这个成绩单中做了什么:
Script started on Sat Nov 7 18:16:25 2009
bash-3.2$ cat T.java
public class T {
public static void main(String[] args) {
String fileIn;
fileIn = System.getProperty ("Import");
System.out.println("Import "+fileIn);
}
}
bash-3.2$ javac T.java
bash-3.2$ java -DImport=data.txt -Din=input.dat -Dout=output1.dat T
Import data.txt
bash-3.2$ exit
exit
Script done on Sat Nov 7 18:17:07 2009