2009-06-04 4 views
0

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

главный $ 4 не найдены ,

класс есть, и он строит чисто. почему он не может найти файл класса? Jar works in 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 я получаю исключения класса класса.

+0

Вы могли бы добавить фрагменты командной строки о том, что вы пытаетесь? – Ram

+0

Позволяет вызвать наш класс, который содержит основной файл someApplication.java, когда я пытаюсь запустить его. Я получаю someApplication $ 4 не найден. Файл .class находится внутри банки. и тот же скрипт сборки, когда сборка под OS X не вызывает проблем. –

ответ

1

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

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

0

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

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

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

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

1

Действительно ли атрибут Main-Class установлен на «приложение»?

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