第一次使用java命令完全运行一个java project
参考:JAVAC 命令详解
1. 前言
参加工作将4年了,居然还没有完整的使用命令行编译过项目。都是使用IDE进行的,现在忽然有了兴致,试试吧
2. 项目简介
这是之前做的一个svn工具项目,比较简单,适合试试手。项目路径为:E:\workspace\svn-util-v4.4
2.1. java环境
如下图
2.2. 编译及运行步骤
-
打开cmd,且换到项目路径下
-
使用
for /r %i in (*.java) do @echo %i>>java.list
,将项目路径下所有java文件路径输出到java.list文件中
for /r %i in (*.java) do @echo %i>>java.list
是cmd的一个命令 -
使用
javac -d ./bin -Djava.ext.dirs=./lib -encoding utf-8 @java.lst
编译
这里需要说明几点:a. 如果源文件数量多,则将源文件名列在一个文件中,名称间用空格或回车行来进行分隔。然后在 javac 命令行中使用该列表文件名,文件名前冠以 @ 字符。
b.-encoding utf-8
设置源文件编码名称。若未指定 -encoding 选项,则使用平台缺省的编码。因为我的项目设置的是utf-8
所以这里使用utf-8
c.-Djava.ext.dirs=./lib
这个是编译时需要用到的lib,在我的项目中就是E:\workspace\svn-util-v4.4下的lib,所以直接使用./lib
d.-d ./bin
设置类文件的目标目录。如果某个类是一个包的组成部分,则 javac 将把该类文件放入反映包名的子目录中,必要时创建目录
e. 这里还有个问题就是自定义conf下的配置文件没有生成到bin目录,所以需要手动拷贝到bin目录下 -
运行项目
切换到bin目录下,执行java -Djava.ext.dirs=../lib com.svn.util.SvnMain
说明:a.
-Djava.ext.dirs=../lib
指定运行时依赖的lib
b.com.svn.util.SvnMain
main方法所在的类 -
参考eclipse的.classpath文件
如下,在kind="src"
中的path实际上就是要编译的java文件和实际运行要使用的配置文件。kind="lib"
就是编译和运行时依赖的jar包
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="conf"/>
<classpathentry kind="lib" path="lib/sequence-library-1.0.3.jar"/>
<classpathentry kind="lib" path="lib/sqljet-1.1.11.jar"/>
<classpathentry kind="lib" path="lib/svnkit-1.9.2.jar" sourcepath="C:/Users/Administrator/AppData/Local/Temp/decompiler/source/svnkit-1.9.2-sources-1533874168439.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.6.0_43"/>
<classpathentry kind="output" path="bin"/>
</classpath>