2009-06-04 9 views
0

je peux construire mon application proprement sur Windows et Mac OS X, mais sur les fenêtres lorsque je tente de lancer l'application que je reçois une classe non trouvée exception de ma classe principaleclasse Java Jar non trouvé Exception

principal 4 $ non trouvé .

classe est là et il construire proprement. pourquoi ne peut-il pas localiser le fichier de classe? Jar fonctionne sous OS X.

Le pot est créé comme suit.

<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> 

Je peux l'exécuter sans erreur sur OS X mais sous Windows je reçois des exceptions de classe non trouvées.

+0

pourriez-vous ajouter des extraits de ligne de commande de ce que vous essayez? – Ram

+0

Appelons notre classe qui détient le principal someApplication.java savoir quand j'essaie de l'exécuter je reçois someApplication $ 4 pas trouvé. fichier .class est là à l'intérieur du pot. et le même script de génération lorsque la génération sous OS X ne pose aucun problème. –

Répondre

1

Est-il exécuté avec la même machine virtuelle Java? Le principal $ 4 semble indiquer que c'est une classe anonyme qui n'est pas trouvée. Difficile de vous aider sans plus d'informations. Peut-être fournir un morceau de code et un stacktrace, et les versions de JRE que vous utilisez?

Typo là: propre sur fenêtres et Mac OS X, mais sur fenêtres

0

pas beaucoup d'informations, mais il ressemble à une classe anonyme dans votre classe principale ne peut pas résoudre une dépendance qu'il a et ne peut donc être créé.

De même, il existe une différence entre vos chemins de classe de temps de construction et d'exécution. Votre temps d'exécution réel peut potentiellement nécessiter plus de pots que la construction. Par exemple, un jar contenant une interface que vous référencez dans votre code serait nécessaire à la construction de votre code, mais vous aurez besoin de jars avec les implémentations de cette interface pour que votre code s'exécute.

EDIT: Votre mise à jour montre votre build, ce que vous avez déjà dit fonctionne (quel OS n'a pas d'importance) comme c'est Java. Votre problème est le classpath à l'exécution. Avez-vous une variable d'environnement classpath définie dans un système d'exploitation et pas l'autre? Nous ne pouvons pas dire de cela quelles sont vos dépendances. Connaître le contenu des classes anonymes impliquées aiderait à comprendre quelle dépendance est manquante.

1

L'attribut de classe principale est-il réellement défini sur "application"?

La classe principale doit indiquer le chemin relatif à la classe que vous souhaitez exécuter, par ex. "myPackage.Application", ou simplement "Main".