文件目录
1.txt的内容随便写的
lib
|--dom4j-1.6.1.jar
pac.iml
src
|--java
|--like
|--god.java
|--book.java
|--resources
|--1.txt
ss.txt
god.java
package like;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
public class god {
public static void main(String[] args) {
Document document= DocumentHelper.createDocument();
System.out.println(document.toString());
System.out.println(111111);
new book().sayBook();
}
}
book.java
package like;
public class book {
public void sayBook(){
System.out.println("this is class book");
}
}
步骤
- 根目录执行如下命令,注意-d后面空格,然后加点,表示当前目录
javac -Djava.ext.dirs=./lib ./src/java/like/*.java -d .
- 验证字节码文件是否能正常执行,还是在根目录执行如下命令
java -Djava.ext.dirs=./lib like.god
- 随便写一个txt文档,里面内容如下,后面打包会执行这个文件
Main-Class: like.god
Class-Path: lib/dom4j-1.6.1.jar
这里需要注意的是,Main-Class:空格 类名 回车。Class-Path也是一样。
有使用三方包,如果没有写Class-Path的情况下,就会报错找不到类,如下
Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/DocumentHelper
at like.god.main(god.java:8)
Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentHelper
at java.net.URLClassLoader.findClassInternal(URLClassLoader.java:401)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:427)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:360)
... 1 more
- 打包生成cc.jar,命令如下
like是要编译后字节码文件的所在的顶级目录
jar -cvfm cc.jar ss.txt like
打包后的文件目录
cc.jar就是我们打的可执行jar包,在cmd中使用java -jar cc.jar就可以执行,下面是打包后的目录。
cc.jar
lib
|--dom4j-1.6.1.jar
like
|--god.class
|--book.class
pac.iml
src
|--java
|--like
|--god.java
|--book.java
|--resources
|--1.txt
ss.txt
执行jar包的结果,可以看到无报错,正常输出。
D:\CDesktop\dm\pac>java -jar cc.jar
org.dom4j.tree.DefaultDocument@3fee733d [Document: name null]
111111
this is class book