2017-06-11 4 views
1

Keine der Antworten auf diese häufig gestellte Frage löst mein Problem.Konnte Hauptklasse-OSX-Terminal nicht finden oder laden

Ich habe eine Datei Verzeichnisbaum wie solche

root 
| 
+--> com 
     | 
     +--> Game.java 
     +--> Window.java 

I zusammengestellt Game.java und Window.java sucesffully und der resultierende Baum ist wie so

root 
| 
+--> com 
     | 
     +--> Game.java 
     +--> Game.class 
     +--> Window.java 
     +--> Window.class 

änderte ich Verzeichnis Wurzel zurück und lief den folgenden Befehl ein von der OSX-Terminal

java com.Spiel

und ich erhielten den folgenden Fehler

kann nicht

Hauptklasse

Ich bin mir nicht sicher, warum finden oder laden, hier sind meine Klassen

Game.java

package com; 

import java.awt.*; 

public class Game extends Canvas implements Runnable { 

    private static final long mSerialVersionUid = -240870510533527854L; 

    public static final int WIDTH = 640, HEIGHT = WIDTH/12 * 9; 

    public Game(){ 

     new Window(WIDTH, HEIGHT, "Let's build a game!", this); 
    } 

    public synchronized void start(){ 

    } 

    @Override 
    public void run(){ 

    } 

    public static void main(String[] args){ 


    } 
} 

Window.java

package com; 

import java.awt.Canvas; 
import javax.swing.JFrame; 
import java.awt.Dimension; 

public class Window extends Canvas { 

    public Window(int width, int height, String title, Game game){ 

     JFrame frame = new JFrame(title); 

     frame.setPreferredSize(new Dimension(width, height)); 
     frame.setMaximumSize(new Dimension(width, height)); 
     frame.setMinimumSize(new Dimension(width, height)); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setResizable(false); 
     frame.setLocationRelativeTo(null); 
     frame.add(game); 
     frame.setVisible(true); 
     game.start(); 
    } 
} 
+0

Das Problem war, dass eine Klasse Der Pfad muss mindestens ein tiefer Domänenname mit zwei Ebenen sein. Ich habe nur einen Domain-Namen, der nur eine Ebene tief ist. –

+0

@Stephen C Dies ist kein Duplikat, ich frage nicht, was der Fehler bedeutet, ich frage, wie man es löst, es gibt mehrere Lösungen für diesen Fehler. –

+0

Die verknüpften Antworten erklären, wie man es löst. Aber Sie müssen sie lesen und herausfinden, welche der Lösungen für Ihre spezielle Version des Problems zutrifft. Aber im Ernst, Sie können nicht erwarten, dass die Leute eine neue Antwort auf Ihre Frage geben, nur weil Sie keine der vielen vorherigen Antworten finden können. Dieses Zeug ist kein Hexenwerk ... aber du musst es verstehen ... es nicht nur kopieren/einfügen einer Lösung. Wenn du es verstehst, dann kannst du es lösen. –

Antwort

0

Dies sollte wie erwartet - lief ich den Code auf macOS 10.12.4 und es funktionierte gut;)

Sie könnten die CLASSPATHUmgebungsvariable haben - ohne die aktuelle Verzeichnis! - In deiner Shell definiert. Wenn dies der Fall ist, versuchen Sie stattdessen:

java -cp . com.Game 

By the way, um zu zeigen, tatsächlich das Fenster, das Sie definiert, erstellen Sie ein Game Objekt in Ihrem main Methode:

public static void main(String[] args) { 
    new Game(); 
} 
+0

'java -cp. com.Spiel 'führt zu derselben Fehlermeldung –

+0

Das Problem bestand darin, dass ein Klassenpfad mindestens ein zweistufiger tiefer Domänenname sein muss. Ich habe nur einen Domain-Namen, der nur eine Ebene tief ist. –

+1

* "Das Problem war, dass ein Klassenpfad mindestens zwei tiefe Domänennamen haben muss. Ich habe nur einen Domänennamen, der nur eine Ebene tief ist." * - Ich fürchte, das ist Unsinn. Der Klassenpfad besteht aus einer Reihe von Pfadnamen, nicht Domänennamen. Bitte lesen Sie die Q & A die verlinkt zu ... und zu den verknüpften Artikeln, die erklären, was der Klassenpfad ist. –

Verwandte Themen