我正在尝试从命令行运行我的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。
答案 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。它简洁而且编写得很好,并且介绍了在包中创建,编译和使用代码的细节。