【问题标题】:Ant deployment. Jar can't find the main class蚂蚁部署。 jar 找不到主类
【发布时间】:2011-10-28 09:37:34
【问题描述】:

创建简单的测试java项目只是为了学习如何使用Ant来部署应用程序。 Java 项目使用 Swing 创建 JFrame 和一个 JLabel 来说“Hello World”。它看起来像这样:

package com.mytest;
import javax.swing.*;        

public class home {
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("HelloWorldSwing");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JLabel label = new JLabel("Hello World");
        frame.getContentPane().add(label);
        frame.pack();
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

然后我创建了 build.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<project default="mytest" basedir=".">
  <target name ="mytest" description="Create a jar for the Test project">
    <echo message="starting MyTest jar creation..." />
    <jar jarfile="mytest.jar" includes="*.class" basedir="bin">
        <manifest>
            <attribute name="Created-By" value="1.6.0_04 (Sun Microsystems Inc.)" />
            <attribute name="Built-By" value="Me" />
            <attribute name="Implementation-Version" value="1.0" />
            <attribute name="Main-Class" value="com.mytest.home" />
        </manifest>
    </jar>
    <echo message="MyTest jar created..." />
  </target>
</project>

问题是,一旦我通过 Eclipse 运行部署,就会创建 jar,但我无法启动它。我收到消息:找不到主类:com.mytest.home

怎么了?这似乎是简单直接的过程。我错过了什么吗?

谢谢。

【问题讨论】:

    标签: java deployment ant jar


    【解决方案1】:

    我在您的 ant 脚本中找不到编译任务。如果没有编译任务,类文件如何生成?

    也只是解压jar文件,看看类是否真的存在?

    【讨论】:

    • 我不确定编译任务是什么?我查看了几个帮助网站,包括一个来自 Eclipse 的帮助网站,但我没有看到任何提到编译任务的地方。我设置项目(属性> 生成器)以在手动构建上运行部署任务。我收到消息 BUILD SUCCESSFUL,但我打开 jar 并且它是空的。如何指定编译任务?
    • 我的意思是,我了解编译任务是什么,但不知道该怎么做。我还在一些旧项目中查看一些现有的 deployment.xml。应用部署正常,但我在 XML 文件中找不到任何编译任务...
    • 看看下面的链接ant.apache.org/manual/Tasks/javac.html。您需要有一个 javac 任务来将 java 文件编译到一个临时文件夹。然后只有您可以将它们捆绑在罐子中。如果您是 ant 新手,还有一个建议,那么手动创建 MANIFEST.MF 文件并将其包含在 jar 中会更容易。一开始它会让你的生活更轻松。
    【解决方案2】:

    我对这一切有点困惑。据我所知,Eclipse 正在运行中构建项目,当您键入时,当您决定部署时,您的部署脚本只需要按照您在脚本中指定的方式打包所有内容。它基本上将类文件从您的项目复制到 jar 文件中。

    对于我的具体问题,原来我缺少 元素,它是 元素的子元素,所以我的 xml 脚本现在看起来像这个:

    <?xml version="1.0" encoding="UTF-8"?>
    <project default="mytest" basedir=".">
      <target name ="mytest" description="Create a jar for the Test project">
        <echo message="starting MyTest jar creation..." />
        <jar jarfile="mytest.jar" includes="*.class" basedir=".">
            <fileset dir="./bin" />
            <manifest>
                <attribute name="Created-By" value="..." />
                <attribute name="Built-By" value="Me" />
                <attribute name="Implementation-Version" value="1.0" />
                <attribute name="Main-Class" value="com.mytest.home" />
            </manifest>
        </jar>
        <echo message="MyTest jar created..." />
      </target>
    </project>
    

    我尝试运行 jar 文件,它成功了。

    【讨论】:

    • 你依赖 eclipse 来编译你的代码。我想说在 ant 脚本中放置一个 javac 任务。否则你迟早会遇到问题。
    猜你喜欢
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 2015-05-30
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    相关资源
    最近更新 更多