Java -Setting расположение вручную скомпилированных файлов классов

StackOverflow https://stackoverflow.com//questions/21043343

Вопрос

Я создал класс, чтобы вручную компилировать свои файлы .java в файлы .class.Эта программа успешно работает.Но .Class файлы создаются в одном каталоге, что и мои файлы .java.Но я хочу, чтобы они были созданы в каком-то кастомном каталоге.Что я могу сделать?

Ниже приведен код, который я использую для компиляции файлов .java.: -

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

// Это будет компилировать файл .java в файл .class и хранить его в том же месте

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

            }


    } 
.

// Этот метод пытается переместить (копировать и вставить) мой сгенерированный файл .Class в пользовательский каталог. Но это дает некоторую ошибку, как файл плохого класса: MyCustomdir \ MarketWatchBean.Class Класс файл содержит неправильный класс: mycustomdir.marketwatchbatchbean Пожалуйста, удалите или убедитесь, что он появляется в правильном подкаталоге класса.

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

Это было полезно?

Решение

Вы должны пропустить вариант -d dest_directory к методу compiler.run(null,null,null,"-d destdirectory",fileToCompile);, пожалуйста, убедитесь, что каталог назначения уже существует.

из Документация ,

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

Вы можете пройти переменное количество аргументов инструменту.Варианты инструмента I.e Javac должны быть переданы как аргументы для этого метода

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top