2015-11-04 100 views
0

我有一个java程序,它接受输入并根据用户提供的输入打印输出。例如,当我运行它时,程序会提示用户:通过bash获取Java程序的输入和输出

System Starts 

login <--- User input 

Login Successful 

我希望能够通过bash的运行程序和程序的输出保存到一个文本文件中。

这是我的尝试:

echo "login" | javac TicketSystem/src/*.java > Output.txt 

但是当我这样做,我Output.txt文件保持为空。我想Output.txt文件包含:

Login Successful 

这可能吗?

+0

你在屏幕上看到“登录成功”,当你运行?是'javac'如何在它正常提示您登录时运行它? –

+0

@EtanReisner我真的不确定我是否应该使用'javac'或不是,我认为这就是我需要做的运行java程序。但是,当我使用javac运行程序时,屏幕上没有看到任何内容,这只是Eclipse – Bolboa

+0

中显示的内容,这是因为'javac'是一个java编译器,而不是java runner。 –

回答

2

要运行java程序,您必须使用java并指定包含main方法的类的名称。

在你运行它之前,你必须首先将.java源文件编译成.class文件。

例如,您有Foo.java包含public static void main(String[] args)

  1. 编译:javac Foo.java - >这给你一个Foo.class
  2. 运行:java Foo - >这需要Foo.class并执行它

我建议你尝试编译并运行程序如果没有重定向,那么尝试重定向工作。

+0

TicketSystem是包含多个类的程序的名称,我将如何在具有多个类的程序上使用'java'? – Bolboa

+0

当你说“程序”时,我认为你的意思是“目录”。该程序由目录内的各种源文件组成。您需要编译所有源文件,例如'javac TicketSystem/*。java' - 然后运行(使用'javac')包含'main'方法的文件。这实际上是非常基本的用法 - 我建议你先阅读一般的java。 – geert3

+0

这很有帮助,但现在当我使用'java TicketSystem/src/Main'(主要是我的主类)运行我的主类时,我得到一个错误列表'java.lang.NoClassDefFoundError'和'(错误的名称Main)' ...有什么想法为什么? – Bolboa

1

尝试:

echo "login" | java <class name that contains main method> > Output.txt 

javac是产生.class文件的编译命令。举例来说,如果我有Program.java包含main方法,我会首先运行

javac Program.java 

从而会产生Program.class文件。然后您将运行

java Program 

执行程序的主要方法。

因此,在这种情况下,如果你的主要方法是Program.java,你可以运行

echo "login" | java Program > Output.txt