Wie kann ich kompilieren von Klassen in Paketen, führen Sie Sie später mit "java-Programm" (ohne den Namen des Pakets)?
Ich habe eine kurze Frage bezüglich javac und Pakete in Java.
Habe ich ein einfaches Programm (wir nennen es Program.java), die derzeit in das folgende Verzeichnis:
- myRepository/myProgram
In Program.java und andere .java-Dateien in die myRepository/myProgram-Verzeichnis, ich habe erklärt package myProgram.*
und beinhaltete auch import myProgram.*;
.
Also wenn ich javac myProgram/Program.java
wird, kompiliert er fein und es läuft gut, wenn ich Typ java myProgram/Program
.
Jedoch, ich versuche zu bekommen .die class-Dateien erzeugt werden, die myRepository
Verzeichnis, nicht myRepository/myProgram
, die ist, wo die source-Dateien sind. Ich habe versucht javac myProgram/Program.java -d ..
liefert .die class-Dateien in myRepository Verzeichnis, aber wenn ich versuche, "java-Programm", es gibt mir die folgende Fehlermeldung:
Exception in thread "main" java.lang.NoClassDefFoundError: Programm (wrong name: myProgram/Programm).
Gibt es eine Möglichkeit, Möglichkeit, die ich bekommen konnte .die class-Dateien zu zeigen, bis in das Haupt-Verzeichnis (myRepository) statt, wo die source-codes (myRepository/myProgram) und ausführen zu können java Program
während im inneren myRepository?
InformationsquelleAutor FlamesPuck12 | 2011-02-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie besser setzen Sie die source-codes, die auf das Verzeichnis source/myProgram und erstellen Sie ein Verzeichnis namens build zu setzen .class-Dateien. So können Sie kompilieren und führen Sie auf diese Weise:
InformationsquelleAutor Dielson Sales
Verpackt Klassen können nicht gespeichert werden, in ein beliebiges Verzeichnis.
Dieser link könnte hilfreich sein:
http://www.herongyang.com/Java-Tools/javac-Option-d-Specifying-Output-Directory.html
InformationsquelleAutor vinga
Rufen Sie den compiler von der
myRepository
Verzeichnis, nicht in das Paket-Verzeichnis, wie hier:javac myProgram/Program.java
, und dannjava myProgram.Program
.Den Klassen erstellt haben, werden in einer package-Struktur für den classloader zu finden, die Sie (zumindest mit den Standard-classloader).
Kannst du Sie in ein anderes Verzeichnis, aber dann haben Sie die richtige Struktur gibt, und Sie sollten geben Sie dieses Verzeichnis auf Ihre VM:
Gibt es keine Möglichkeit (mit der Standard -
java
Befehl) zur Durchführung einer Klasse in einem Paket ohne Angabe des Paketnamens.Könnten Sie eine Verpackung Klasse im anonymen Paket (z.B. ohne
package
Erklärung), die ruft einfach die original-Klasse:Alternativ, wenn Sie die Entwicklung mit einer IDE, oft können Sie einfach starten Sie Ihr Programm mit einer Schaltfläche klicken Sie auf.
Zur Verteilung, Sie würde stattdessen alle class Dateien in einer jar-Datei und definieren Sie die main-class im manifest. Dann können Sie anrufen, Ihr Programm auf diese Weise:
Abgesehen vom schreiben einer neuen
java
Umsetzung, Nein. Sie können denken über die Verwendung einer IDE -, wo Sie können einfach eine Taste drücken (oder drücken Sie den hotkey), um kompilieren und ausführen des Codes.InformationsquelleAutor Paŭlo Ebermann