Исключение не найдено в классе Java Jar - PullRequest
0 голосов
/ 04 июня 2009

Я могу чисто построить свое приложение на Windows и Mac OS X, но на Windows, когда я пытаюсь запустить приложение, я получаю исключение не найденный класс о моем основном классе

main $ 4 не найдено.

класс есть, и он строит чисто. почему он не может найти файл класса? Jar работает в OS X.

Баночка создается следующим образом.

  <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 я получаю исключения класса не найдены.

Ответы [ 3 ]

1 голос
/ 04 июня 2009

Действительно ли для атрибута Main-Class установлено значение "application"?

Main-Class должен указывать относительный путь к классу, который вы хотите запустить, например, «myPackage.Application» или просто «Main».

1 голос
/ 04 июня 2009

Это работает с той же JVM? main $ 4 указывает на то, что это анонимный класс, который не найден. Трудно помочь вам без дополнительной информации. Может быть, предоставить кусок кода и некоторую трассировку стека, а также версии JRE, которые вы используете?

Опечатка там: чисто на windows и Mac OS X, но на windows

0 голосов
/ 04 июня 2009

Не так много информации, но похоже, что анонимный класс в вашем основном классе не может разрешить некоторую зависимость, и поэтому не может быть создан.

Кроме того, существует разница между временем сборки и путями классов во время выполнения. Реальная среда выполнения может потребовать больше jar-файлов, чем сборка.

Например, для сборки кода потребуется jar, содержащий интерфейс, на который вы ссылаетесь в коде, но для запуска кода вам потребуются jar с реализациями этого интерфейса.

EDIT: Ваше обновление показывает вашу сборку, которая, как вы уже сказали, работает (какая ОС не имеет значения), так как это Java. Ваша проблема - путь к классам во время выполнения. У вас есть переменная окружения classpath, установленная в одной ОС, а не в другой? Мы не можем сказать из этого, каковы ваши зависимости. Знание содержимого участвующих анонимных классов поможет выяснить, чего не хватает.

...