java在命令行下编译带有package命名空间的项目

时间:2022-03-14 17:42:06
package com.study.java.net.test;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class SocketRecive {

public static void main(String[] args) {
DatagramSocket socket = null;
try {
socket = new DatagramSocket(9001);

byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf , buf.length);

socket.receive(packet);
String message = new String(buf, 0, buf.length);
System.out.println(message);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (socket != null) {
socket.close();
}
}
}

}

假如上面的这个文件保存在D:\NEON_vision\workspace\java_study\src\com\study\java\net\test这个文件目录下面,那么现在要使用命令行的方式进行编译这个文件,如果还是按照没有命名空间的方式进行编译和运行的话会入坑的。

  1. javac -d D:\NEON_vision\workspace\java_study\src\com\study\java\net\test SocketRecive.java(*.java)
  2. javac -d . SocketRecive.java(*.java)(使用点代替当前目录)

以上两种编译下方式的运行方式: java com.study.java.net.test.SocketRecive

3.第三种编译方式编译到指定的位置:

比如:D:\myclasses

编译命令:javac -d D:\myclasses SocketRecive.java(*.java)

运行命令:set classpath=\myclasses         ----(注意:这里只需要到包名的父目录,因为包名和类名是一个整体)

       java com.study.java.net.test.SocketRecive

      set classpath=                         -----清空classpath的配置