- java运行在虚拟机的基础上,虚拟机执行字节码
.class
文件运行出最终结果,那么今天我们来单纯使用java命令来运行java文件;废话不多说,直接上操作
1. java环境配置(跳过)
2. 编写java文件
新建txt文本文件,然后重命名文件后缀为.java
public class JavaTest{
public static void main(String[] arg0){
System.out.println("==main==");
}
}
- 注意事项:
- Java要求
.java
文件的最外层的类一定要与文件名同名, 且为public
类型;否则编译报错:JavaTest.java:2: 错误: 类ClassTest是公共的, 应在名为 ClassTest.java 的文件中声明 public class ClassTest{ ^ 1 个错误
3. 编译成.class
文件
编译命令:javac [file]
,执行位置: 类的根目录
- 注意事项:
- 编码错误问题:如果存在汉字等非标字符,需要指定编码格式:
javac -encoding UTF-8 [file]
否则会报错:ZigZag.java:33: 错误: 编码GBK的不可映射字符 //绉绘鎹㈡櫙锛岃泧褰㈣蛋浣?
4. 运行.class
文件
运行命令:java [class name]
,执行位置: 类的根目录
这里的class name包含完整的: package.class;完整的包名、类名;
- 注意事项
package
指定包问题:如果指定了包名,例如:package com.linx.lean;
,那么运行命令必须在包名的根目录执行,且指定完整文件夹路径:例如:
否则会报错:E:\workspace\...\app\src\main\java>java com.linx.lean.ZigZag result = PINALSIGYAHRPI
E:\workspace\...\app\src\main\java\com\linx\lean>java ZigZag.class 错误: 找不到或无法加载主类 ZigZag.class E:\workspace\...\app\src\main\java\com\linx\lean>java com.linx.lean.ZigZag 错误: 找不到或无法加载主类 com.linx.lean.ZigZag E:\workspace\...\app\src\main\java\com\linx\lean>cd ../../../ E:\workspace\...\app\src\main\java>java com.linx.lean.ZigZag result = PINALSIGYAHRPI
总结
javac
编译,与包名无关,生成可执行文件.class
java
运行,与包名有关,执行参数为包名.类名;- 其他常用的命令还有
javap
,用来反编译.class
文件:举例E:\workspace\...\app\src\main\java\com\linx\lean>javap -c JavaTest.class Compiled from "JavaTest.java" public class JavaTest { public JavaTest(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc #3 // String ==main== 5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 8: return }