Επιδιόρθωση: Δεν ήταν δυνατή η εύρεση ή η φόρτωση της κύριας τάξης



Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων

Το λάθος ' Δεν ήταν δυνατή η εύρεση ή η φόρτωση της κύριας τάξης Εμφανίζεται όταν χρησιμοποιείτε μια εντολή java στη γραμμή εντολών για να ξεκινήσετε ένα πρόγραμμα Java καθορίζοντας το όνομα κλάσης στο τερματικό. Ο λόγος που συμβαίνει αυτό οφείλεται κυρίως στο λάθος προγραμματισμού του χρήστη κατά τη δήλωση της τάξης.



Δεν ήταν δυνατή η εύρεση ή η φόρτωση της κύριας κλάσης στη γραμμή εντολών Java

Δεν ήταν δυνατή η εύρεση ή η φόρτωση της κύριας τάξης - γραμμή εντολών Java



Όπως αναφέρθηκε προηγουμένως, αυτό το σφάλμα δεν σχετίζεται κυρίως με το σύστημα και ο χρήστης κάνει λάθος σε πολλά σενάρια όπως φαίνεται παρακάτω. Πριν προχωρήσουμε, υποθέτουμε ότι έχετε μια βασική γνώση της γλώσσας προγραμματισμού Java και πώς λειτουργεί.



Τι προκαλεί το σφάλμα 'Δεν ήταν δυνατή η εύρεση ή η φόρτωση της κύριας κλάσης' στην Java;

Το μήνυμα 'Δεν ήταν δυνατή η εύρεση ή η φόρτωση της κύριας κλάσης' σημαίνει ότι το πρώτο βήμα της μηχανής Java που ανέλαβε την κλάση για εκτέλεση απέτυχε. ο εντολή java δεν ήταν ικανός να εγκατάσταση την τάξη στον σωστό κατάλογο.

Σε ορισμένες περιπτώσεις, πρέπει να προσθέσετε το σωστή διαδρομή αρχείου και στρέψτε το τερματικό Java στη σωστή θέση. Δεδομένου ότι εκτελείτε την εντολή από το τερματικό της γραμμής εντολών, ο υπολογιστής δεν γνωρίζει πού βρίσκεται η τάξη ή πού βρίσκεται. Στα στοχευμένα IDE, αυτό δεν είναι το πρόβλημα, καθώς το IDE κρατά έναν δείκτη προς τον τρέχοντα κατάλογο εργασίας.

Τι είναι η σύνταξη «java»;

Πριν ξεκινήσουμε την αντιμετώπιση προβλημάτων γιατί το τερματικό μας επιστρέφει ένα σφάλμα κατά την προσπάθεια εκτέλεσης, πρώτα πρέπει να εξετάσουμε τη σύνταξη της εντολής. Εάν δεν χρησιμοποιείτε τη σωστή σύνταξη, θα αντιμετωπίσετε αυτό το σφάλμα αναπόφευκτα.



Η κανονική σύνταξη της εντολής είναι κάπως έτσι:

java [...] [...]

Εδώ είναι μια επιλογή γραμμής εντολών, είναι ένα πλήρως αναγνωρισμένο όνομα κλάσης Java και είναι ένα όρισμα γραμμής εντολών που διαβιβάζεται στην εφαρμογή σας όταν καταρτίζεται ολόκληρο το πακέτο.

Ένα παράδειγμα έγκυρης εντολής είναι:

java -Xmx100m com.acme.example.ListAppuals kevin βέλη bart

Η παραπάνω εντολή θα κάνει την εντολή java να εκτελέσει τις ακόλουθες λειτουργίες:

  • Θα αναζητήσει μια μεταγλωττισμένη έκδοση του μαθήματος « com.acme.example.ListAppuals '.
  • Μετά την αναζήτηση, θα φορτώσει την τάξη.
  • Στη συνέχεια, όταν φορτώνεται το μάθημα, η τάξη θα αναζητηθεί για μια «κύρια» μέθοδο με έγκυρη υπογραφή, τροποποιητές και τύπο επιστροφής. Ένα δείγμα κύρια τάξη θα ήταν κάτι σαν:
δημόσιο στατικό κενό (String [])
  • Η μέθοδος θα καλείται με ορίσματα «kevin», «βέλη» και «bart» ως συμβολοσειρά [].

Πώς να διορθώσετε 'Δεν ήταν δυνατή η εύρεση ή η φόρτωση της κύριας τάξης'

Λύση 1: Έλεγχος ορίσματος ονόματος τάξης

Το πιο συνηθισμένο λάθος που κάνουν οι χρήστες είναι ότι παρέχουν ένα λάθος όνομα τάξης ως όρισμα (ή ένα σωστό όνομα κλάσης είναι λάθος μορφή). Δεδομένου ότι δηλώνουμε παραμέτρους στη γραμμή εντολών, είναι πολύ πιθανό ότι θα περάσετε το όρισμα ονόματος κλάσης σε λάθος μορφή. Εδώ θα παραθέσουμε όλα τα πιθανά σενάρια όπου μπορείτε να κάνετε λάθος.

  • Γράφοντας α απλό όνομα τάξης . Εάν δηλώσετε την τάξη σε ένα πακέτο όπως 'com.acme.example', πρέπει να χρησιμοποιήσετε το πλήρες όνομα τάξης συμπεριλαμβανομένου του πακέτου στην εντολή Java.
java com.acme.example.ListAppuals

αντί

java ListAppuals
  • Θα έπρεπε δηλώστε ένα όνομα τάξης αντί να δηλώσετε ένα όνομα αρχείου ή ένα όνομα διαδρομής. Η Java δεν λαμβάνει την κλάση εάν δηλώσετε ένα όνομα διαδρομής / όνομα αρχείου για αυτήν. Ανακριβής Οι εγγραφές περιλαμβάνουν τα ακόλουθα:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Θήκη πρέπει να ληφθεί υπόψη. Οι εντολές Java είναι πεζών-κεφαλαίων και αν κάνετε ένα λάθος ακόμη και ενός γράμματος, δεν θα μπορείτε να φορτώσετε την κύρια τάξη. Ένα παράδειγμα του λανθασμένα λάθη είναι:
java com.acme.example.listappuals
  • Εσείς δεν θα έπρεπε δηλώνω σε όνομα αρχείου προέλευσης . Όπως αναφέρθηκε προηγουμένως, χρειάζεται μόνο να δηλώσετε την τάξη με τη σωστή μορφή πλήρους ονόματος κλάσης. Παράδειγμα λάθους είναι:
java ListAppuals.java
  • Αυτό το σφάλμα θα προκύψει επίσης εάν κάνετε ένα τυπογραφικό λάθος ή ξεχάστε να γράψετε το όνομα της τάξης εντελώς .

Εάν έχετε κάνει λάθη στη δήλωση του ονόματος τάξης, βεβαιωθείτε ότι το διορθώσατε και, στη συνέχεια, δοκιμάστε να ξεκινήσετε το πρόγραμμα.

Λύση 2: Έλεγχος διαδρομής τάξης

Εάν έχετε δηλώσει σωστά το όνομα κλάσης αλλά εξακολουθείτε να εμφανίζεται το σφάλμα, οι πιθανότητες είναι ότι η εντολή java δεν μπόρεσε να βρει το καθορισμένο όνομα κλάσης στη διαδρομή. Το classpath είναι μια διαδρομή όπου ο χρόνος εκτέλεσης Java αναζητά αρχεία πόρων και τάξεων. Μπορείτε εύκολα να ορίσετε το classpath χρησιμοποιώντας δύο διαφορετικές εντολές όπως φαίνεται παρακάτω:

C:> sdkTool -classpath classpath1; classpath2 ... C:> set CLASSPATH = classpath1; classpath2 ...

Για να λάβετε περισσότερες πληροφορίες σχετικά με το classpath, θα πρέπει να δείτε τα ακόλουθα έγγραφα.

Τεκμηρίωση εντολών Java

Ρύθμιση classpath

Λύση 3: Έλεγχος καταλόγου

Όταν δηλώνετε έναν κατάλογο ως classpath, θα αντιστοιχεί πάντα στη ρίζα του namespace. Για παράδειγμα, εάν το '/ usr / local / acme / class' βρίσκεται στο classpath, τότε η Java θα αναζητήσει μια κλάση 'com.acme.example.Appuals'. Θα αναζητήσει μια τάξη με το ακόλουθο όνομα διαδρομής:

/usr/local/acme/classes/com/acme/example/Appuals.class

Στην ουσία, αν βάλετε την ακόλουθη διεύθυνση στο classpath, η Java δεν θα μπορεί να βρει την τάξη:

/ usr / local / acme / class / com / acme / παράδειγμα

Θα πρέπει επίσης να ελέγξετε το δικό σας υποκατάλογος και να δούμε αν ταιριάζει με το FQN. Εάν τα μαθήματά σας FQN είναι 'com.acme.example.Appuals', τότε η Java θα αναζητήσει ένα 'Appuals.class' στον κατάλογο 'com / acme / example'.

Για να σας δώσουμε ένα παράδειγμα, ας υποθέσουμε το ακόλουθο σενάριο:

  • Η τάξη που θέλετε να εκτελέσετε είναι: com.acme.example.Appuals
  • ο πλήρης διαδρομή αρχείου είναι: /usr/local/acme/classes/com/acme/example/Appuals.class
  • ο τρέχων κατάλογος εργασίας είναι: / usr / local / acme / class / com / acme / example /

Τότε θα ισχύουν τα ακόλουθα σενάρια:

# λάθος, απαιτείται FQN java Appuals # λάθος, δεν υπάρχει φάκελος «com / acme / example` στον τρέχοντα κατάλογο εργασίας java com.acme.example. Εφαρμογές # λάθος, παρόμοιο με το παραπάνω σενάριο java -classpath. com.acme.example.Apuals # ΟΚ; έχει οριστεί ένα σχετικό classpath java -classpath ../../ .. com.acme.example.Appuals # OK; έχει οριστεί ένα απόλυτο classpath java -classpath / usr / local / acme / class com.acme.example.Appuals

Σημείωση: Το classpath πρέπει επίσης να περιλαμβάνει όλες τις άλλες κατηγορίες (χωρίς σύστημα) που χρειάζονται οι εφαρμογές σας.

Λύση 4: Έλεγχος πακέτου κλάσης

Εάν όλες οι παραπάνω λύσεις ισχύουν στην περίπτωσή σας, πρέπει να βεβαιωθείτε ότι ο πηγαίος κώδικας σας είναι τοποθετημένος στον σωστό φάκελο. Επίσης, έχετε δηλώσει σωστά το πακέτο . Εάν εκτελέσετε τον κωδικό σας με IDE, πιθανότατα θα σας ενημερώσει σχετικά με το ζήτημα. Ωστόσο, στην περίπτωσή μας, δεδομένου ότι το εκτελούμε στη γραμμή εντολών, το λάθος θα περάσει απαρατήρητο και θα λάβετε το σφάλμα τάξης υπό συζήτηση.

4 λεπτά ανάγνωση