在windows环境下,java编译生成的class文件是无法直接双击执行的。
需要使用java 命令来执行带有main方法的class文件
工具/原料
- bat
- java
- dos
方法/步骤
- 1
Windows下执行java代码编译生成的class文件的命令
命令:
java
用法: java [-options] class [args...]
(执行类)
或 java [-options] -jar jarfile [args...]
(执行 jar 文件)
- 2
演示用的jar及相关配置文件的目录结构。
demo很简单,就是点击按钮时,使用slf4j打印一行日志
- 3
方法1:直接在cmd窗口执行java命令。lib后面是反斜杠
命令:
java -cp .;lib\*;JavaStudy.jar frame.App
- 4
方法2:直接在cmd窗口执行java命令。lib后面是斜杠。算是替大家做个测试吧
命令:
java -cp .;lib/*;JavaStudy.jar frame.App
- 5
分享一个出现错误的场景。命令中少了 ".;"
命令:
java -cp lib/*;JavaStudy.jar frame.App
- 6
方法3:使用bat脚本。可以把刚才的可用的命令粘到bat脚本中。
此处使用dos命令中的for来实现把jar文件添加到classpath中
脚本内容:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set CP=.;JavaStudy.jar
FOR %%j IN (%~dp0lib\*.jar) DO set CP=!CP!;%%j
echo %CP%
java -cp %CP% frame.App
- 7
如果cp和jar option同时出现会怎么样呢?
“ java.lang.NoClassDefFoundError”
命令:
java -cp .;lib\*; -jar JavaStudy.jar
异常详细信息:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/slf4j
/LoggerFactory
at frame.App$1.actionPerformed(App.java:25)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour
ce)
END