Domanda

Ho creato una classe per compilare manualmente i miei file .java in file .Class.Questo programma funziona con successo.Ma, i file .Class vengono creati nella stessa directory dei miei file .java.Ma, voglio che vengano creati in qualche directory personalizzata.Cosa posso fare?

Di seguito è riportato il codice che sto usando per compilare i file .java.: -

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

// Questo compilerà il mio file .java in file .Class e memorizzalo nella stessa posizione

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);

            }


    } 
.

// Questo metodo tenta di spostarsi (dalla copia e incolla) il mio file .Class generato in directory personalizzata. Ma dà qualche errore come un file di cattiva classe: mycustomdir \ marketwatchbean.class Il file di classe contiene classe sbagliata: mycustomdir.marketwatchbean Si prega di rimuovere o assicurarsi che appaia nella corretta sottodirectory del classpath.

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();
            }
        }
.

È stato utile?

Soluzione

È necessario passare l'opzione -d dest_directory al metodo compiler.run(null,null,null,"-d destdirectory",fileToCompile); Assicurarsi che la directory di destinazione esista già.

Dal Documentazione ,

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

È possibile passare il numero variabile di argomenti allo strumento.I.e le opzioni dello strumento Javac dovrebbero essere passate come argomenti a questo metodo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top