it-swarm.com.de

Java im Paket von der Befehlszeile aus ausführen

Ich habe die zuvor gestellten Fragen gelesen. Einige sind vage und keiner hat mein Problem gelöst, daher muss ich erneut fragen.

Ich habe zwei einfache Klassen,

package One;
import One.Inner.MyFrame;
public class test
{
    public static void main(String args[])
    {
        MyFrame f= new MyFrame();
    }
}

Und die andere Klasse ist, 

package One.Inner;
import Java.awt.*;
import javax.swing.*;

public class MyFrame extends JFrame
{
    public MyFrame()
    {
        setPreferredSize(new Dimension(400,560));
        setVisible(true);
    }
}

Ich bin im Basisordner "basic" in Windows cmd. Ich kompiliere mit

basic> javac *.Java -d .

Ein Ordner und ein Unterordner wird erstellt.

cd One
basic\One> Java test

Dies führt zu einer großen Anzahl von Fehlern. Viele Antworten wiesen darauf hin, den vollständigen Pfad anzugeben, der nicht funktioniert hat ..__ Meine Klassen sind in einer Klasse.

25
user2756339

Sie würden es laufen lassen als:

Java One.Test

... aber aus dem Verzeichnis root (basic), nicht aus dem Verzeichnis One. Sie geben immer den vollständig qualifizierten Klassennamen an.

Ach ja, und die Paketnamen in Java sollten in Kleinbuchstaben geschrieben werden, also one und one.inner, nicht One und One.Inner. Nur eine Konvention, die aber fast jeder befolgt.

40
Jon Skeet

Wenn das Verzeichnis lautet:

basic\One

Führen Sie Java aus dem Basisverzeichnis des Pakets aus:

basic>Java One.test or basic>One.test <optional arguments>

(Idealerweise wäre das Paket in Kleinbuchstaben und die Klasse in Großbuchstaben):

basic>Java one.Test

Wenn Sie "nicht vorhanden" -Nachrichten erhalten, kann der Java-Befehl in Ihrer Klasse referenzierte Klassen nicht finden. Sie können mit der Option -cp auf sie zeigen ('.' Bedeutet 'hier', und Sie können beliebig viele Orte hinzufügen, geteilt durch ';' unter Windows und ':' unter Linux).

basic>Java -cp . one.Test
or
basic>Java -cp .;..\..\someJar.jar;c:\someDirectory\classesDirectory  one.Test
13
MattC

Wenn Sie in Ihrer Java-Datei package deklarieren, glauben Sie, dass der Java-Compiler die gleiche Ordnerarchitektur in Ihrem System verwendet. In Ihrem Fall sucht der Java-Compiler One als Paket und dann test.class. Oder, um genau zu sein, schauen Sie einfach in Ihre .class-Datei. Bitte schauen Sie sich das Bild unten an (ich verwende meinen Fall Hallo und Tester) 

 .class

Wie Sie den Pfad in image sehen können, ist Hello/Tester (mein Fallbeispiel), also sollte die Architektur wie Hello-> Tester aussehen. 

Wenn Sie nicht über dieselbe Architektur verfügen und diese beim Kompilieren erstellen möchten, verwenden Sie den Befehl javacp. 

2
Simmant

wenn Sie eine Klasse mit einem Paket erstellen, wenn Sie es von cmd aus ausführen möchten, müssen Sie ein Verzeichnis mit demselben Namen des Pakets erstellen. Fügen Sie die .class in das Paket ein. Anschließend können Sie es problemlos ausführen. Sie haben beispielsweise eine Klasse mit dem Namen "one" und erstellt Wenn Sie diese Klasse im Paket mit dem Name-Pack verwenden, müssen Sie diese Befehle ausführen

1 Javac one.Java 
Nach der Kompilierung wurde ein Verzeichnis mit dem Namenspaket erstellt. Führen Sie anschließend diesen Befehl aus 
2 Java-Paket 
Hinweis:
All dies muss im aktuellen Arbeitsverzeichnis erfolgen. Der Name "one" wurde hier als Dateiname und Hauptklassenname ausgewählt. Wir alle wissen, dass der erste Name des ersten Befehls der Dateiname und der zweite ist ist Hauptklassenname 

1
javageek

Die folgende Zeile des Haralan Dobrev-Codes löst das Problem.

Java -cp ../ one.Test
0
Ziaullah