Java带包编译运行

2023-10-12  本文已影响0人  火卫控
源代码运行模式

java 在 Javase11 版本后支持源代码运行模式 即 Java **.java
而在之前版本需要 javac *.java 然后再java <class>
java **.java 源代码运行模式,类似于Python脚本
而不生成class文件
指定编码方式:-D 参数 紧跟后面

java -Dfile.encoding=UTF-8 classDemo1.java

D:\Coding\java_docu\hellojava1\test8>java -Dfile.encoding=UTF-8 classDemo1.java   
这是一个公有的方法!任何类都可以访问。
这是一个受到保护的方法!只有子类可以访问。
这是一个私有的方法!只有类本身才可以访问。

D:\Coding\java_docu\hellojava1\test8>java classDemo1.java
杩欐槸涓?涓叕鏈夌殑鏂规硶锛佷换浣曠被閮藉彲浠ヨ闂??
杩欐槸涓?涓彈鍒颁繚鎶ょ殑鏂规硶锛佸彧鏈夊瓙绫诲彲浠ヨ闂??
杩欐槸涓?涓鏈夌殑鏂规硶锛佸彧鏈夌被鏈韩鎵嶅彲浠ヨ闂??

D:\Coding\java_docu\hellojava1\test8>java -D'file.encoding=UTF-8' classDemo1.java 
杩欐槸涓?涓叕鏈夌殑鏂规硶锛佷换浣曠被閮藉彲浠ヨ闂??
杩欐槸涓?涓彈鍒颁繚鎶ょ殑鏂规硶锛佸彧鏈夊瓙绫诲彲浠ヨ闂??
杩欐槸涓?涓鏈夌殑鏂规硶锛佸彧鏈夌被鏈韩鎵嶅彲浠ヨ闂??  

Java带包编译
现在以Java SE 21 LTS 长期支持版本为例 2023.9.19发布
进行Java带包编编译运行

D:\Coding\java_docu\hellojava1\test9>java --version 
openjdk 11.0.16.1 2022-08-12 LTS
OpenJDK Runtime Environment Microsoft-40648 (build 11.0.16.1+1-LTS)
OpenJDK 64-Bit Server VM Microsoft-40648 (build 11.0.16.1+1-LTS, mixed mode)

注意java 有一个参数 -D

-D<名称>=<值>
                  设置系统属性

带包Java文件

package hellojava1.test9;
*
*

树结构

D:\Coding\java_docu>tree
卷 990pro_1T 的文件夹 PATH 列表
卷序列号为 EC07-5B6B
D:.
├─demo
├─hellojava1
│  ├─com
│  │  └─hpe
│  │      └─java
│  ├─test1
│  ├─test10
│  ├─test3
│  ├─test4
│  ├─test5
│  ├─test6
│  ├─test7
│  ├─test8
│  └─test9
└─others

D:\Coding\java_docu>

编译


如果在包目录,直接编译 然后 -cp运行

javac CutImageFrame.java
java -cp F:\编程\Java精彩编程2000例\MR\02\033\src com.zzk.CutImageFrame

F:\编程\Java精彩编程2000例\MR\02\033\src\com\zzk>javac CutImageFrame.java

F:\编程\Java精彩编程2000例\MR\02\033\src\com\zzk>java -cp F:\编程\Java精彩编程2000例\MR\02\033\src com.zzk.CutImageFrame

-cp 有那种方式指定 classpath路径
绝对路径 F:\编程\Java精彩编程2000例\MR\02\034\src
相对路径 ./../../
具体如下:

F:\编程\Java精彩编程2000例\MR\02\034\src\com\zzk>java -cp F:\编程\Java精彩编程2000例\MR\02\034\src com.zzk.CreateImageFrame 

F:\编程\Java精彩编程2000例\MR\02\034\src\com\zzk>java -cp ./../../ com.zzk.CreateImageFrame 

如果在根目录,-d打包编译,然后 运行路径class

此.java文件涉及到url 图片,用java直接运行源代码不理想,报错如下:

F:\编程\Java精彩编程2000例\MR\02\033\src\com\zzk>java CutImageFrame.java   
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.net.URL.toString()" because "url" is null
        at java.desktop/sun.awt.SunToolkit.getImageFromHash(SunToolkit.java:700)
        at java.desktop/sun.awt.SunToolkit.getImage(SunToolkit.java:736)
        at com.zzk.CutImageFrame.<init>(CutImageFrame.java:38)
        at com.zzk.CutImageFrame.main(CutImageFrame.java:32)


在java文件目录下编译
javac -encoding utf-8 DempException.java
然后回退到工程根目录运行编译好的类文件,并带上路径

java hellojava1/test9/DemoException
或者java hellojava1.test9.DemoException


D:\Coding\java_docu\hellojava1\test9>javac -encoding utf-8 DemoException.java 

D:\Coding\java_docu\hellojava1\test9>java DemoException      
错误: 找不到或无法加载主类 DemoException
原因: java.lang.NoClassDefFoundError: hellojava1/test9/DemoException (wrong name: DemoException)

D:\Coding\java_docu\hellojava1\test9>cd ..

D:\Coding\java_docu\hellojava1>cd ..

D:\Coding\java_docu>java hellojava1/test9/DemoException
Throwing MyException from a()
Throwing MyException from b()
Throwing MyException from c()
hellojava1.test9.MyException: Originated in c()
        at hellojava1.test9.DemoException.c(DemoException.java:53)
        at hellojava1.test9.DemoException.main(DemoException.java:68)
error code: 47

D:\Coding\java_docu>java hellojava1.test9.DemoException
Throwing MyException from a()
Throwing MyException from b()
Throwing MyException from c()
hellojava1.test9.MyException: Originated in c()
        at hellojava1.test9.DemoException.c(DemoException.java:53)
        at hellojava1.test9.DemoException.main(DemoException.java:68)
error code: 47

D:\Coding\java_docu>cd hellojava1/test9

D:\Coding\java_docu\hellojava1\test9>java hellojava1/test9/DemoException
错误: 找不到或无法加载主类 hellojava1.test9.DemoException
原因: java.lang.ClassNotFoundException: hellojava1.test9.DemoException

或者在当前 。java文件路径下 采用 -cp参数 指定classpath工程根路径 ,
java -cp D:\Coding\java_docu\ hellojava1.test9.DemoException
或者 java -cp D:\Coding\java_docu\ hellojava1/test9/DemoException

D:\Coding\java_docu\hellojava1\test9>java -cp D:\Coding\java_docu\ hellojava1.test9.DemoException
Throwing MyException from a()
Throwing MyException from b()
Throwing MyException from c()
hellojava1.test9.MyException: Originated in c()
        at hellojava1.test9.DemoException.c(DemoException.java:53)
        at hellojava1.test9.DemoException.main(DemoException.java:68)
error code: 47

D:\Coding\java_docu\hellojava1\test9>java -cp D:\Coding\java_docu\ hellojava1/test9/DemoException 
Throwing MyException from a()
Throwing MyException from b()
Throwing MyException from c()
hellojava1.test9.MyException: Originated in c()
        at hellojava1.test9.DemoException.c(DemoException.java:53)
        at hellojava1.test9.DemoException.main(DemoException.java:68)
error code: 47
上一篇下一篇

猜你喜欢

热点阅读