2012-08-15 10 views
20

Ich habe ein Java-Projekt zum Aufrufen eines Web-Service erstellt. Es hat eine Main-Java-Datei und eine andere Klassendatei. Ich habe einige JAR-Dateien für den HTTP-Client verwendet.
In Eclipse läuft es gut. Ich muss das Java-Programm in der Eingabeaufforderung ausführen, indem Sie einige Argumente übergeben.
In Eingabeaufforderung ging ich in src Ordner meine eine andere Java-Klasse Haupt Java und Unterklasse Java-Datei und gab den folgenden BefehlSo führen Sie das Java-Programm in der Eingabeaufforderung aus

javac mainjava.java  

Ich erhalte folgende Fehler

mainjava.java:14: cannot find symbol
symbol : class SubClass

hier SubClass enthalten ist Datei zum Aufruf des Web-Service.

Wie wird das Programm ausgeführt, indem Argumente übergeben werden?

+0

Haben Sie Ihren Klassenpfad eingerichtet? – Rocky

+0

Danke für alle, um mir zu helfen, es funktioniert gut für mich ..... – Vignesh

Antwort

20

javac ist der Java-Compiler laufen. java ist die JVM und was Sie verwenden, um ein Java-Programm auszuführen. Sie führen .java Dateien nicht aus, sie sind nur Quelldateien. Vermutlich ist es .jar irgendwo (oder ein Verzeichnis mit .class Dateien), die das Produkt, um es in Eclipse zu bauen ist:

 
java/src/com/mypackage/Main.java 
java/classes/com/mypackage/Main.class 
java/lib/mypackage.jar 

Von Verzeichnis java ausführen:

java -cp lib/mypackage.jar Main arg1 arg2

+0

Dies ist mein Ordner stucture webcall/src/main.java ---- webcall/src/Sub.java ------ webcall/extjarfiles/httpcore.jar ----- webcall/extjarfiles /httpclient.jar----- – Vignesh

+0

Gibt es einen Ordner 'webcall/classes' oder' webclass \ lib'? – hmjd

+0

Ich benutzte javac -cp extjarfiles/AllJarFiles main.java ------ Es kompiliert erfolgreich, aber Fehler beim Ausführen des Projekts erhalten – Vignesh

2

Sie können den Befehl javac *.java verwenden, um alle Ihre Java-Quellen zu kompilieren. Außerdem sollten Sie etwas über den Klassenpfad lernen, da Sie anscheinend den entsprechenden Klassenpfad für die erfolgreiche Kompilierung festlegen müssen (weil Ihre IDE einige Bibliotheken zum Erstellen von WebService-Clients verwendet). Außerdem kann ich Ihnen empfehlen zu überprüfen, welche Befehle Ihre IDE verwendet, um Ihr Projekt zu erstellen.

+0

In meinem ide mit diesem Befehl ausführen ***** "C: \ Programme \ Java \ jre6 \ bin \ javaw.exe" - Dfile.encoding = Cp1252 -classpath "D: \ Projekte \ Eclipse-Projekte \ WebServiceCall \ bin; D: \ Projekte \ Eclipse-Projekte \ WebServiceCall \ ExternalJarFiles \ httpcore-4.0.jar; D: \ Projekte \ Eclipse-Projekte \ WebServiceCall \ ExternalJarFiles \ httpclient-4.0.jar; D: \ Projekte \ Eclipse-Projekte \ WebServiceCall \ ExternalJarFiles \ commons-logging-1.1.jar; D: \ Projekte \ Eclipse-Projekte \ WebServiceCall \ ExternalJarFiles \ gson-1.7.1.jar "WSCall.ServiceCall * *** – Vignesh

+0

Wenn ich den obigen Befehl in der Eingabeaufforderung kann ich es ausführen. aber ich kann die Argumente nicht übergeben – Vignesh

+0

Sie können versuchen, am Ende des Befehls Argumente hinzuzufügen. – gkuzmin

14

Eine sehr allgemeine Eingabeaufforderung, wie für Java ist

javac mainjava.java 
java mainjava 

Sie werden oft sehr die Menschen sehen, tun

javac *.java 
java mainjava 

Wie für die Unterklasse Problem, das wahrscheinlich ist auftritt, weil ein Weg von fehlt Dein Klassenpfad, die -c-Flagge, glaube ich, wird benutzt, um das zu setzen.

+0

+1 für 'javac * .java ', dies wird auch die SubClass.java-Quelldatei des OP kompilieren. – martijno

1

javac kompiliert nur den Code. Sie müssen den Befehl java verwenden, um den Code auszuführen. Der Fehler liegt daran, dass Ihr Klassenpfad die Klasse Unterklasse nicht enthält, wenn Sie versucht haben, sie zu kompilieren. Sie müssen sie mit dem -cp Variable in javac Befehl

java -cp classpath-entries mainjava arg1 arg2 sollte hinzufügen Ihren Code mit 2 Argumente

1

Alles, was Sie tun müssen, ist:

  • Erstellen Sie die mainjava Klasse den Klassenpfad falls vorhanden (optional) mit

    javac * .java [-cp "wb.jar;"]

  • Manifest erstellen.txt-Datei mit Inhalt ist:

    Main-Klasse: mainjava

  • Paket die JAR-Datei für mainjava Klasse

    jar cfm mainjava.jar manifest.txt * .class

Dann Sie können diese .jar-Datei von cmd mit dem Klassenpfad (optional) ausführen und Argumente dafür angeben.

java [-cp "wb.jar;"] mainjava arg0 arg1 

HTH.