如何从我的项目构建 jar 文件?

Posted

技术标签:

【中文标题】如何从我的项目构建 jar 文件?【英文标题】:how to build jar file from my project? 【发布时间】:2011-07-29 07:38:39 【问题描述】:

我用javamysql 编写了一个程序,现在我想要一个jar 文件,当我点击它时程序工作(without that mysql install on my system)。

我右键单击我的项目并按下 clean 并构建,但它没有构建 jar 文件及以下

写在输出中。

Updating property file: C:\Users\mehdi\Documents\NetBeansProjects\project1\build\built-clean.properties
Deleting directory C:\Users\mehdi\Documents\NetBeansProjects\project1\build
clean:
init:
deps-jar:
Created dir: C:\Users\mehdi\Documents\NetBeansProjects\project1\build
Updating property file: C:\Users\mehdi\Documents\NetBeansProjects\project1\build\built-jar.properties
Created dir: C:\Users\mehdi\Documents\NetBeansProjects\project1\build\classes
Created dir: C:\Users\mehdi\Documents\NetBeansProjects\project1\build\empty
Compiling 8 source files to C:\Users\mehdi\Documents\NetBeansProjects\project1\build\classes
C:\Users\mehdi\Documents\NetBeansProjects\project1\src\project1\NewUser.java:24: package sun.swing.table does not exist
import sun.swing.table.DefaultTableCellHeaderRenderer;

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error
C:\Users\mehdi\Documents\NetBeansProjects\project1\nbproject\build-impl.xml:595: The following error occurred while executing this line:
C:\Users\mehdi\Documents\NetBeansProjects\project1\nbproject\build-impl.xml:276: Compile failed; see the compiler error output for details.
BUILD FAILED (total time: 0 seconds)

现在我想知道如何在没有安装 mysql 的情况下从我的程序中构建一个可以正常工作的 jar 文件。

I use net beans 6.9.1

and jdk-6u23-windows-i586

【问题讨论】:

【参考方案1】:

这根本与mysql无关。编译的错误很明显:

C:\Users\mehdi\Documents\NetBeansProjects\project1\src\project1\NewUser.java:24: package sun.swing.table does not exist
import sun.swing.table.DefaultTableCellHeaderRenderer;

您的构建失败,因为它无法在任何地方找到导入。修复您的导入并重新编译。

【讨论】:

@mehdi,该错误日志不会说谎。它可以与 NetBeans 一起运行,很公平,尝试找出它在编译期间失败的原因。 @mehdi,导入来自 sun.* 包,通常不应该在代码中使用。您是否安装了多个 JDK?也许它可以在 Netbeans 中正确运行,因为它使用的是 Sun JDK,但是当您以其他方法运行它时,您使用的是非 Sun JDK,因此该类不存在。【参考方案2】:

右键单击您的项目并转到 Properties-->Build-->Compiling 在底部使用“-Xlint:deprecation”填充 Additional Compiler Options 也不会有害。

【讨论】:

我用 -Xlint:deprecation 填充了附加编译器选项,但它没有字。 您收到以下消息: 1. 注意:某些输入文件使用或覆盖了已弃用的 API。和 2. 注意:使用 -Xlint:deprecation 重新编译以获取详细信息。编译器选项解决了第二个问题。您必须尝试找到已弃用的 API 并将其删除。一般来说,如果输入正确,Netbeans 会创建完美运行的 jar。【参考方案3】:

我敢说您正在尝试使用没有 sun.* 包的 OpenJDK 进行构建。由于Netbeans持续编译,它可能在netbeans中运行。检查您的设置以确保您使用的是 sun JDK,然后一切正常。

【讨论】:

或避免使用 sun.* 包! 我通常会建议这样做,但这会假定他在没有任何真正理由的情况下使用它们。有时可能需要使用太阳包。例如,在使用 javax.sound api 时,我必须这样做。 我同意,我只是想指出,如果有人在使用 sun.* 软件包,应该非常确定他这样做的原因,而不是意外使用它们(因为 eclipse 建议使用它! )【参考方案4】:

实际上有两个问题我想分开: 1.如何克服编译错误? 2. 如何将你的项目打包成一个独立的可运行的jar文件?

上面第一次说得够多了。我只想添加一些一般性建议:在导出项目之前仔细检查您的类路径:不同的 IDE 可能在默认设置的类路径上有不同的库,但是当您导出代码并在其他位置从命令行运行它时,事情会停止工作,因为以前可用的第 3 方不再可用。

关于第二个问题:您需要将您正在使用的所有 3rd 方打包在您的 jar 中。我确信应该有一些 NetBeans 插件可以帮助您做到这一点。您可能会发现此链接很有帮助:

http://dr.berkeley.edu/REM/wiki/index.php/Making_a_Java_executable_jar_in_Netbeans

祝你好运!

【讨论】:

【参考方案5】:

我遇到了同样的问题。为了使事情正常进行,我将其添加到 pom.xml 文件中...

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <compilerArguments>
            <bootclasspath>$java.home\lib\rt.jar</bootclasspath>
        </compilerArguments>
    </ configuration>
</plugin>

【讨论】:

【参考方案6】:

可能你在编译的时候要加上javac -XDignore.symbol.file,见Using internal sun classes with javac

仅供参考 maven 应该是这样的:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <compilerArgument>
            -XDignore.symbol.file
        </compilerArgument>
    </configuration>
</plugin>

【讨论】:

以上是关于如何从我的项目构建 jar 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的 react-native 项目构建 android apk?

如何使用gradle构建源jar

如何使用 gradle 构建源 jar?

如何在 IntelliJ IDEA 中为 Spring Boot 项目构建 jar 工件

从具有外部数据库连接的 spring 项目构建 jar 文件

如何运行构建后生成的maven项目的jar文件?