1

我可以在 Windows 和 Mac OS X 上干净地构建我的应用程序,但是在 Windows 上,当我尝试运行应用程序时,我得到一个关于我的主类的类未找到异常

未找到 main$4。

类就在那里,它构建得很干净。为什么找不到类文件?Jar 在 OS X 中工作。

Jar 的创建方式如下。

  <target name="jar" depends="">
  <jar destfile="build/application.jar" > 
    <manifest>
      <attribute name="Built-By" value="Hamza"/>
      <attribute name="Main-Class" value="application"/>
    </manifest>
    <fileset dir="build">
      <include name="**/*.class"/>
  <include name="**/*.png"/> 
      <exclude name="**/*.jar"/>
    </fileset>
  </jar>
</target>

我可以在 OS X 上运行它而不会出现任何错误,但在 Windows 中我得到类未找到异常。

4

3 回答 3

1

它是否使用相同的 JVM 运行?main$4 似乎表明它是一个未找到的匿名类。如果没有更多信息,很难为您提供帮助。也许提供一段代码和一些堆栈跟踪,以及您正在使用的 JRE 版本?

那里的错字:在windows和 Mac OS X 上干净利落,但在windows上

于 2009-06-04T13:38:43.580 回答
1

Main-Class 属性是否真的设置为“应用程序”?

Main-Class 应指明您要运行的类的相对路径,例如“myPackage.Application”,或简称为“Main”。

于 2009-06-04T16:30:09.880 回答
0

信息不多,但看起来主类中的匿名类无法解决它所具有的某些依赖项,因此无法创建。

此外,您的构建时间和运行时类路径之间存在差异。您的实际运行时可能需要比构建更多的 jar。

例如,构建代码需要包含您在代码中引用的接口的 jar,但您需要具有该接口实现的 jar 才能运行代码。

编辑:您的更新显示了您的构建,您已经说过它有效(哪个操作系统无关紧要),因为这是 Java。您的问题是运行时的类路径。您是否在一个操作系统而不是另一个操作系统中设置了类路径环境变量?我们无法从中看出您的依赖关系是什么。了解所涉及的匿名类的内容将有助于找出缺少哪些依赖项。

于 2009-06-04T14:25:49.867 回答