使用命令运行java文件

  • java运行在虚拟机的基础上,虚拟机执行字节码.class文件运行出最终结果,那么今天我们来单纯使用java命令来运行java文件;废话不多说,直接上操作

1. java环境配置(跳过)

2. 编写java文件

新建txt文本文件,然后重命名文件后缀为.java
使用命令运行java文件_第1张图片

public class JavaTest{
    public static void main(String[] arg0){
        System.out.println("==main==");
    }
}
  • 注意事项:
  1. Java要求.java文件的最外层的类一定要与文件名同名, 且为public类型;否则编译报错:
    JavaTest.java:2: 错误: 类ClassTest是公共的, 应在名为 ClassTest.java 的文件中声明
    public class ClassTest{
       		  ^
    1 个错误
    

3. 编译成.class文件

编译命令:javac [file]执行位置: 类的根目录
编译java文件

  • 注意事项:
  1. 编码错误问题:如果存在汉字等非标字符,需要指定编码格式: javac -encoding UTF-8 [file]
    否则会报错:
    ZigZag.java:33: 错误: 编码GBK的不可映射字符
        //绉绘鎹㈡櫙锛岃泧褰㈣蛋浣?
    

4. 运行.class文件

运行命令:java [class name]执行位置: 类的根目录
这里的class name包含完整的: package.class;完整的包名、类名;
执行.class文件

  • 注意事项
  1. 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."":()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
    }
    

你可能感兴趣的:(Java)