在 Ubuntu 上,使用 Java 编译源代码后,可以使用 jar 命令将编译后的 .class 文件打包成 .jar 文件。以下是详细步骤:
首先,确保你已经安装了 Java Development Kit (JDK)。你可以使用以下命令检查是否已安装:
java -version
javac -version
如果尚未安装,可以使用以下命令安装 OpenJDK:
sudo apt update
sudo apt install openjdk-17-jdk
假设你的 Java 源代码位于 src 目录下,并且你希望将编译后的类文件输出到 bin 目录:
mkdir -p bin
javac -d bin src/*.java
这会将所有 .class 文件编译并放置在 bin 目录中。
如果你希望生成的 .jar 文件可以指定主类(即包含 main 方法的类),需要创建一个清单文件(MANIFEST.MF)。例如,假设你的主类是 com.example.Main,可以按照以下步骤操作:
创建一个文本文件 manifest.txt:
nano manifest.txt
在文件中添加以下内容,并替换 com.example.Main 为你的实际主类:
Main-Class: com.example.Main
保存并退出编辑器(在 nano 中按 Ctrl + O 保存,Ctrl + X 退出)。
使用 jar 命令将编译后的类文件和清单文件打包成 .jar 文件。
如果你不需要指定主类,可以直接打包:
jar cf myapp.jar -C bin .
这会将 bin 目录下的所有内容打包到 myapp.jar 中。
如果需要指定主类,可以使用以下命令:
jar cfm myapp.jar manifest.txt -C bin .
c:创建新的归档文件。f:指定归档文件名。m:包含指定的清单文件。-C bin .:切换到 bin 目录,并将当前目录(即 bin)的内容添加到归档中。打包完成后,可以使用以下命令运行 .jar 文件:
java -jar myapp.jar
假设你的项目结构如下:
project/
├── src/
│ └── com/example/Main.java
└── bin/
步骤:
编译:
mkdir -p bin
javac -d bin src/com/example/Main.java
创建清单文件 manifest.txt:
Main-Class: com.example.Main
打包:
jar cfm myapp.jar manifest.txt -C bin .
运行:
java -jar myapp.jar
依赖管理:如果你的项目依赖于外部库,打包成可执行的 JAR(即包含所有依赖的“胖 JAR”)会更加方便。可以使用构建工具如 Maven 或 Gradle 来自动化这一过程。
使用构建工具:对于复杂的项目,建议使用 Maven 或 Gradle 来管理依赖、编译和打包过程。这些工具提供了更强大的功能和更好的可维护性。
如果你选择使用 Maven,以下是基本步骤:
安装 Maven:
sudo apt install maven
创建 Maven 项目结构:
project/
├── pom.xml
└── src/
└── main/
└── java/
└── com/example/Main.java
编写 pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myapp</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.example.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
编译并打包:
cd project
mvn clean package
打包完成后,生成的 JAR 文件位于 target/ 目录下。
使用 Maven 或 Gradle 可以大大简化项目的构建和管理过程,特别是当项目规模增大或依赖增多时。