【问题标题】:Convert to jar while retaining classpath在保留类路径的同时转换为 jar
【发布时间】:2012-03-16 22:55:34
【问题描述】:

我有一个使用外部库的 Java 程序,其位置是通过类路径指定的。我现在想将 Java 程序制作成一个独立的 jar 文件(这样我可以在程序运行时将我的 IDE 用于其他事情)。

如何将现有的.java 文件转换为可执行的 jar 文件?

我能够制作一个 jar 文件,其中包含类文件、清单文件和库的 jar 文件(在类路径中指定),但这似乎仍然是错误的,因为我得到类未找到错误.

【问题讨论】:

  • 细节,细节,细节(换句话说,我们需要你提供帮助)
  • .java 文件只是源代码。它无法执行。
  • “我能够制作一个包含类文件、清单文件和库的 jar 文件的 jar 文件。” Don '不要那样做。该库应放置在 Jar(1) 可访问的位置,并按相对路径在主 Jar 的清单中列出。 1) 一个简单的地方是与主 Jar 相同的目录。然后“相对路径”就变成了“名称”。

标签: java jar classpath manifest executable-jar


【解决方案1】:

为您准备的 Ant 脚本。您错过的是作为 jar 任务字符串的类路径生成。

<target name="all">
    <property name="dir" value="yourProjectDir" />
    <property name="name" value="$yourProjectName" />

    <!-- clean -->
    <delete dir="temp/" />
    <mkdir dir="temp/bin/" />

    <!-- prepare libs -->
    <copy todir="temp/libs/"><fileset dir="${dir}/lbs/" /></copy>

    <!-- prepare classpath -->
    <pathconvert property="classpath" pathsep=" ">
        <path><fileset dir="temp/libs/" /></path>
        <chainedmapper><flattenmapper /><globmapper from="*" to="libs/*" /></chainedmapper>
    </pathconvert>

    <!-- compile -->
    <javac destdir="temp/bin/" srcdir="${dir}/src/" target="1.6" source="1.6" includeAntRuntime="false">
        <classpath>
            <pathelement location="temp/bin/" />
            <fileset dir="temp/libs/" />
        </classpath>
    </javac>

    <!-- jar -->
    <jar destfile="temp/${name}.jar" basedir="temp/bin/">
        <manifest>
            <attribute name="Main-Class" value="Main" />
            <attribute name="Class-Path" value="${classpath}" />
        </manifest>
    </jar>

    <!-- zip jar + libs -->
    <zip destfile="${name}-${version}.zip">
        <fileset dir="temp" includes="${name}.jar, libs/" />
    </zip>
</target>

【讨论】:

    【解决方案2】:

    以下是步骤,如何从命令提示符运行独立应用程序。 1. 创建一个示例 java 文件,然后保存在特定位置(如 d:\sample\Hello.java。 2.打开命令提示符编译那个java类,然后像Hello.jar文件一样创建jar 3. 然后在环境文件中设置类路径(如 D:\sample\Hello.jar ; 4.现在运行你的java类,它会工作(d:sample>java Hello

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-30
      • 2010-10-13
      • 1970-01-01
      • 2015-08-11
      • 1970-01-01
      • 2012-04-25
      • 2016-09-04
      • 1970-01-01
      相关资源
      最近更新 更多