> 文章列表 > java编译和运行带有包名的类

java编译和运行带有包名的类

java编译和运行带有包名的类

写在前面

对于习惯了使用ide的我们似乎早已经忘记了如何通过命令行来编译和运行java类了,至少我是这样的,本文就一起来回顾下吧!

1:运行不带包的类

这种相信大多数朋友都记得,直接javac yourCode.java,然后java yourCode.class就行了,如下源码:

//package javadeveloper.mkmoney;public class TestByte {public static void main(String[] args) {TestByte testByte = new TestByte();System.out.println(testByte);}
}

则如下编译和运行:

bogon:temp xb$ javac TestByte.java 
bogon:temp xb$ java TestByte
TestByte@6073f712

注意java命令运行时不要带.class,否则就会变为.class.class,会找不到文件,

但是当我们通过package xxx.yyy给类指定了包之后有怎么样编译和运行呢?接着来看下。

2:运行带包的类

定义如下:

package javadeveloper.mkmoney;public class TestByte {public static void main(String[] args) {TestByte testByte = new TestByte();System.out.println(testByte + "111");}
}

编译有两种方式,类在文件夹javadeveloper/mkmoney中,以及不在两种情况,分别看下。

2.1:在package对应的文件夹中

如下图:

java编译和运行带有包名的类
通过如下方式编译:

bogon:temp xb$ javac javadeveloper/mkmoney/TestByte.java 

运行后会在javadeveloper/mkmoney文件夹下生成对应的字节码文件,如下图:
java编译和运行带有包名的类
通过如下两种方式运行:

bogon:temp xb$ java javadeveloper/mkmoney/TestByte
javadeveloper.mkmoney.TestByte@5f150435111OR bogon:temp xb$ java javadeveloper.mkmoney.TestByte
javadeveloper.mkmoney.TestByte@5f150435111

注意必须在根目录执行,如下:

bogon:temp xb$ tree
.
|____javadeveloper
| |____mkmoney
| | |____TestByte.class

2.2:不在package对应的文件夹中

如下在一个随机的目录;
java编译和运行带有包名的类
然后通过增加-d .的方式来生成字节码文件,则会按照包路径生成对应的文件夹并将字节码文件放在目录中,如下:

bogon:temp xb$ javac -d . TestByte.java 
bogon:temp xb$ tree
.
|____javadeveloper
| |____mkmoney
| | |____TestByte.class
|____TestByte.java

接着我们可以通过如下的两种方式来运行:

bogon:temp xb$ java javadeveloper/mkmoney/TestByte
javadeveloper.mkmoney.TestByte@5f150435111
bogon:temp xb$ java javadeveloper.mkmoney.TestByte
javadeveloper.mkmoney.TestByte@5f150435111