PDA

Επιστροφή στο Forum : Ερωτηση για δυνατους λύτες στην Java



mickymouse
19-06-08, 10:16
Αρχικά καλημέρα.
Φίλοι συνάδελφοι προγραμματιστάδες της Java που χρησιμοποιειτε Netbeans σας έχω μία ερώτηση.
Πώς γίνεται ένα project (αρκετα μεγάλο) να τρέχει κανονικά αμα του κάνω run μεσα απο το IDE και οταν του κάνω java -jar arxeio.jar να μου πεταει error οτι failed to load Main-class manifest atribute from... to path mazi me to jar.
Το compile και το build ολοκληρωνονται κανονικα δίχως errors ή warnings

Καμιά ιδέα ? διοτι το παλεύω 2 μερες τώρα και ακρη δεν βρίσκω

teacake
19-06-08, 10:23
Προφανώς έχεις πρόβλημα στο manifest. Όταν το τρέχεις μέσα από το IDE, δεν χρησιμοποιεί το jar που φτιάχνεται αλλά τα class files που φτιάχνει στο build directory. Αυτά φορτώνει, άρα το λάθος σου είναι στο Manifest και / η γενικότερα στο jar που εχει φτιαχτεί.

mickymouse
19-06-08, 10:32
Και γίνεται να διορθωσω αυτα τα λάθη στο manifest μέσα απο το IDE χωρίς να πειραξω χειροκίνητα το αρχειο?

teacake
19-06-08, 10:45
Θα πρέπει να κάνεις κλικ στο Properties του project, να πας στην κατηγορία run και να επιλέξεις την Main class του project, χρησιμοποιώντας το κουμπί browse.

mickymouse
19-06-08, 11:33
Αυτο ήταν το πρώτο που έλεγξα. Λοιπόν παραθέτω τον κώδικα του manifest.mf το οποίο είναι και read only απο το netbeans


Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 10.0-b22 (Sun Microsystems Inc.)

Να ενημερώσω που δεν το αναφερα πριν ότι το project είναι τύπου Java Desktop Application και όχι απλα Java Application. Εκδοση NetBeans 6.1 . JDK 1.6.0

murray
19-06-08, 11:58
Αυτό που λες δεν έχει σχέση με το αν χρησιμοποιείς NetBeans ή Eclipse ή κάτι άλλο. Το μήνυμα που παίρνεις προέρχεται από τη JVM επειδή δεν έχεις πεις εσύ ποια απ' τις classes που περιέχονται στο jar περιέχει τη Main, δηλαδή τη JVM δεν ξέρει από πού να αρχίσει την εκτέλεση του προγράμματος. Κάνε αυτό που σου λέει ο teacake και λογικά δεν θα έχεις άλλο πρόβλημα.

teacake
19-06-08, 12:13
Υπόψη ότι αν έχεις χρησιμοποιείσει τον visual editor του netbeans για να φτιάξεις το πρόγραμμά σου θα πρέπει να προσθέσεις στο classpath και το swing-layout-1.0.jar
Γενικά μπορείς να τρέξεις μια εφαρμογή χωρίς να λάβεις υπόψη το manifest ως εξής:
java -cp "swing-layout-1.0.jar;το_jar_της_εφαρμογής_σου.jar" ηMainκλάσητηςεφαρμογήςσου
Όπου αντικαθιστάς το το_jar_της_εφαρμογής_σου.jar με το jar που σου έχει φτιάξει το netbeans. Απλά θα πρέπει να βάλεις στο ίδιο directory και το swing-layout-1.0.jar ή να δηλώσεις το πλήρες path στο αρχείο αυτό στο classpath

mickymouse
19-06-08, 12:30
αυτο που λεει ο teacake το εχω κάνει δείτε και την εικόνα

mickymouse
20-06-08, 09:45
Λοιπόν μετά απο πολύ ψάξιμο και πειραματισμό κατέληξα ότι κάτι δεν πήγαινε καλά με το IDE. Οτι και να κάνω σωστό manifest δεν βγαζει που να χτυπιέμαι. Έβαλα μια παλιότερη εκδοση του ίδιο project που έχει σωστό manifest και τρέχει κανονικά και αμα κάνω σε αυτήν clean and build το μανιφεστ που βγαίνει είναι λάθος . Κάνω απεγκατάσταση και εγκατασταση ξανά του netbeans και βλέπουμε

mickymouse
23-06-08, 13:20
Λυθηκε το θέμα.
Απλά δημιοyργησα νέο project και έκανα copy paste τον κώδικα του παλιού μέσα στο καινουριο.
Τι να πώ . Problem Solved

@ ADSLgr.com All rights reserved.