文件结构
包结构中default包下不能有包。因为自定义包中的的类无法调用default包下的类。所以结构需要是这样的
src
- A
- Test1.java - B
- Test2.java
这样才能相互调用。
命令
javac:编译命令。使用参数有 -cp(-classpath)指引用的包的路径,比如 Test1.java中有 import B.Test2,则
javac -cp . .\B*.java (注:也可以.\B\Test2.java,但使用*方便,一下子全包含)
-d 指定生成包的路径,我们可以生成在src下的class,这样比较好看,好整理。即 -d .\classes
综上,就是javac -cp .\B*.java -d . .\classes .\A\Test1.java
例子
home
│ AddressUtils.java
│ Log.java
│ Receiver.java
│ Sender.java
│ Seq.java
│ Listener.java
│ UdpSocket.java
│ WorkThread.java
│ UxServer.java
│ UxServerIn.java
│ UxSocket.java
│ UxSocketL.java
│ UxSocketS.java
│
├─frames
│ KFrame1.java
│ TFrame.java
│ KFrame.java
│ Frame1.java
│ Frame.java
│ VFrame.java
│ NFrame.java
│
└─tick
Tick.java
ThreadFactory.java
frames包下的Frame引用home下的Seq。UxSocket引用frames中的包。那么如何编译Receiver跟Sender,如下
javac -cp . .\home\*.java .\home\tick\*.java .\home\frames\*.java -d .\classes .\home\Receiver.java
javac -cp . .\home\*.java .\home\tick\*.java .\home\frames\*.java -d .\classes .\home\Sender.java
注意-cp, -d后跟.前是有空格的,一定要加。不然.\home*.java不会被引用
运行
需要进入class所在的文件夹,将包名也加上。比如上面要运行Receiver, 如果不加*home.*则会提示
错误: 找不到或无法加载主类 Receiver
原因: java.lang.ClassNotFoundException: Receiver
cd classes
java home.Receiver