使用 ANT 构建 eclipse 项目 - 找不到主要 class

Building eclipse project with ANT - can't find main class

用 ant 构建 eclipse 项目 - 找不到主要的 class

我正在尝试使用 ANT 将我的 eclipse 项目构建到 .jar 中。

我的目录结构是:

/

|---src/DynamDNS/.java 文件和 build.xml

| ---bin/DynamDNS/.class 来自 eclipse 的文件

| ---lib/.jars 包含在 class 路径

这是我的 build.xml:

<?xml version="1.0" ?>
<project name="TestMain" default="CreateJar">
  <target name="CreateJar" description="Create Jar file">
    <jar jarfile="DynamDNS.jar" basedir="." includes="**/.class">
        <manifest>
            <attribute name="Main-Class" value="DynamDNS.Connector" />
        </manifest>
    </jar>  
  </target>
</project>

事物构建正确,并生成了一个 jar。然而,当我 运行 罐子时: java-罐子DynamDNS.jar

我收到错误: 错误:无法找到或加载主 class DynamDNS.Connector

我的 class 名字绝对拼写正确。

此外,classes 似乎在罐子里:

jar tvf DynamDNS.jar 
     0 Tue Apr 21 17:11:26 IST 2015 META-INF/
   135 Tue Apr 21 17:11:24 IST 2015 META-INF/MANIFEST.MF
  5947 Mon Apr 20 21:07:58 IST 2015 Connector.class
   979 Mon Apr 20 20:40:44 IST 2015 IPV4.class
   370 Mon Apr 20 20:40:44 IST 2015 InvalidIPV4Exception.class

包名为 DynamDNS

有人有什么想法吗?

如果您的 main-class 是 DynamDNS.Connector,这意味着连接器 class 在 DynamDNS 包中,因此应该在 jar 内的 DynamDNS 文件夹中,而您的看起来在罐子的顶层。

我认为问题出在您的 ant 文件中的 jar 任务。删除包含并使用您的 bin 文件夹作为 basedir:

<jar jarfile="DynamDNS.jar" basedir="bin">
    <manifest>
        <attribute name="Main-Class" value="DynamDNS.Connector" />
    </manifest>
</jar>  

(参见 https://ant.apache.org/manual/Tasks/jar.html 示例)