从命令行运行java项目

时间:2014-03-23 21:19:20

标签: java command-line compilation

我正在尝试从命令行运行我的java项目。我有两个看起来像

的包
src/catalog1/MainClass - class with main program(he accesses 3 classes below)
src/catalog2/Class1 -
src/catalog2/Class2 -  Three classes that main program uses
src/catalog2/Class3 -

我应该如何编译这个项目然后运行呢?在尝试使用javac编译mainprogram之前我没有使用cmd,然后通过java命令运行但是它没有用,有一个错误,它可以'找到Class1,Class2,Class3。

3 个答案:

答案 0 :(得分:0)

您应该一次编译所有类:

javac *.java

答案 1 :(得分:0)

以下是您在Mac上执行的步骤。

创建一个Makefile。将其另存为Makefile

JAVA_HOME=`/usr/libexec/java_home -v 1.6`

all: Class1.java Class2.java Class3.java Class4.java

     ${JAVA_HOME}/bin/javac *.java

clean: 
   rm *.class

然后创建一个shell脚本。将其另存为program.sh

JAVA_HOME=`/usr/libexec/java_home -v 1.6`

${JAVA_HOME}/bin/java MainClass

然后运行chmod +x program.sh

在您的终端运行中:

make
./program.sh

答案 2 :(得分:0)

您可以随时随地使用javac编译代码,但使用java运行代码的方式略有不同。

java指定的类名必须是完全限定的(包括包名),并且包结构直接绑定到您的目录结构。

因此,在您的情况下,假设package catalog1;位于MainClass的顶部,package catalog2;位于“catalog2”中源文件的顶部,那么您必须运行程序从“src /”目录(或catalog[12]/*.class文件所在的根目录):

java catalog1.MainClass

基本上,对于包Program中名为a.b.c的类,必须满足以下所有条件:

  • Program.java必须指定package a.b.c;
  • Program.java必须住在<source>/a/b/c/Program.java
  • Program.class必须住在<bin>/a/b/c/Program.class(如果 是同一个地方就可以了。)
  • 必须使用
  • java a.b.c.Program来运行它,这必须从包含a/b/c/Program.class的根目录完成(更确切地说,a.b.c.Program必须在类路径中,但是类path默认包含隐含的“。”。

我强烈推荐this tutorial。它简洁而且编写得很好,并且介绍了在包中创建,编译和使用代码的细节。