Frage

Ich habe eine Klasse erstellt, um meine manuell zu kompilieren.java-Dateien in .Klassendatei.Dieses Programm funktioniert erfolgreich .Aber, .klassendateien werden im selben Verzeichnis wie meine erstellt.java-Dateien.Ich möchte jedoch, dass sie in einem benutzerdefinierten Verzeichnis erstellt werden.Was kann ich tun?

Unten ist der Code, den ich zum Kompilieren verwende.java-Dateien.:-

//***************************//

//dies kompiliert meine .java-Datei in .klassendatei und speichern Sie sie am selben Speicherort

public void compileFile(String pageName,String packageName) {

    String fileToCompile = packageName  + pageName +".java";

    System.out.println("String to compile :- " + fileToCompile );

    System.setProperty("java.home", "C:\\install\\Java\\jdk1.7");
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

    int compilationResult = compiler.run(null, null, null, fileToCompile);

            if(compilationResult == 0){

                System.out.println("Compilation is successful");

            }else{

                System.out.println("Compilation Failed");
              //  this.deleteFiles(fileToCompile);

            }


    } 

// diese Methode versucht, meine generierten zu verschieben (durch Kopieren und Einfügen).klassendatei in benutzerdefiniertes Verzeichnis.aber es gibt einen Fehler wie eine fehlerhafte Klassendatei:mein benutzerdefiniertes Verzeichnis \ MarketWatchBean.Klasse klassendatei enthält falsche Klasse:mein benutzerdefiniertes Verzeichnis.MarketWatchBean Bitte entfernen Sie es oder stellen Sie sicher, dass es im richtigen Unterverzeichnis des Klassenpfads angezeigt wird.

public void moveFiles(String sourcePath, String destPath){

        InputStream inStream = null;
        OutputStream outStream = null;

            try{

                File afile =new File(sourcePath);
                File bfile =new File(destPath);

                inStream = new FileInputStream(afile);
                outStream = new FileOutputStream(bfile);

                byte[] buffer = new byte[1024];

                int length;
                //copy the file content in bytes 
                while ((length = inStream.read(buffer)) > 0){

                    outStream.write(buffer, 0, length);

                }

                inStream.close();
                outStream.close();

                //delete the original file
               // afile.delete();

                System.out.println("File is copied successfully!");

            }catch(IOException e){
            //  this.deleteFiles(sourcePath);
            //  this.deleteFiles(destPath);
                e.printStackTrace();
            }
        }
War es hilfreich?

Lösung

Sie müssen die Option übergeben -d dest_directory zur Methode compiler.run(null,null,null,"-d destdirectory",fileToCompile); Stellen Sie sicher, dass das Zielverzeichnis bereits vorhanden ist.

Von der Dokumentation,

int run(InputStream in,
        OutputStream out,
        OutputStream err,
        String... arguments)

Sie können dem Tool eine variable Anzahl von Argumenten übergeben.dh Javac-Tooloptionen sollten als Argumente an diese Methode übergeben werden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top