Używam klasy javax.tools.JavaCompiler
(jdk6) do kompilowania pliku źródłowego, ale plik źródłowy zależy od pliku jar. Jak ustawić ścieżkę klasy javax.tools.JavaCompiler
?Jak ustawić ścieżkę klas, gdy używam javax.tools.JavaCompiler kompilować źródło?
Odpowiedz
Metoda javax.tools.JavaCompiler#getTask() przyjmuje parametr options
, który pozwala ustawić opcje kompilatora. Poniższy message opisuje w prosty sposób ustawić je w celu uzyskania dostępu do programu wywołującego za ścieżkę klas:
być konieczne skonfigurowanie standardowego menedżera plików java wiedzieć o plików (s) JAR - użyć kompilatora Argument opcji, aby to zrobić.
Domyślnie kompilator Javy obiekt tylko wydaje się wiedzieć o domyślne lokalizacje dla bootclasspath, extdirs i endorseddirs katalogi w kategoriach jego ścieżce klasy.
Trzeba dodać bieżącej ścieżki klasy programu wywołującego do kompilatora Javy instancji, który zostanie przeniesiony na standardowego menedżera plików, który będzie następnie znaleźć zajęcia w plikach jar.
Oto jak to zrobić w the compiler wrapper I wrote
List<String> optionList = new ArrayList<String>(); // set compiler's classpath to be same as the runtime's optionList.addAll(Arrays.asList("-classpath",System.getProperty("java.class.path"))); // any other options you want optionList.addAll(Arrays.asList(options)); JavaCompiler.CompilationTask task = compiler.getTask(out,jfm,diagnostics,optionList,null,jfos);
Wszystko trzeba wtedy jest uzyskanie odpowiedniego zestawu ścieżce klasy podczas uruchamiania programu wywołującego.
Ten sam problem przyszedł mi ostatnio, w końcu znalazłem dwa obejścia. Można ustawić ścieżkę klasy albo powołać StandardJavaFileManager.setLocation (StandardLocation.CLASS_PATH, "YOUR_CLASS_PATH") lub Compiler.getTask (ARG_0, ARG_1, ARG_2, CLASS_PATH_OPTIONS, podobnie jak pierwsza odpowiedź zamieszczone tutaj mówi.
Aby to działało, musiałem wykonać 'StandardJavaFileManager.setLocation (StandardLocation.CLASS_PATH, Arrays.asList (new File (classpath));); –
- 1. Gradle: jak ustawić ścieżkę klas konfiguracji JavaExec?
- 2. kłopoty, gdy używam homebrew
- 3. Jak skonfigurować dodatkową ścieżkę klas w SpringBoot?
- 4. Programowo kompilować java z JavaCompiler?
- 5. Jak mogę drukować, gdy używam% dopar%
- 6. Jak mogę ustawić źródło obrazu z base64
- 7. W systemie Linux, jak uzyskać pełną ścieżkę polecenia używam?
- 8. Jak ustawić w pom, aby nie kompilować testów?
- 9. Raporty Jaspera: jak kompilować podraporty
- 10. Trwale ustawić ścieżkę schematu PostgreSQL
- 11. Jak ustawić ścieżkę biblioteki C# dla aplikacji?
- 12. Jak ustawić ścieżkę dołączania PHP przez .htaccess?
- 13. Amazon Elastic Beanstalk: jak ustawić ścieżkę wsgi?
- 14. Xamarin - miga, gdy zastępuję źródło obrazu
- 15. Problem z nowymi liniami, gdy używam toprettyxml()
- 16. Jak ustawić domyślne źródło obrazu, jeśli źródło wiązania ma wartość null?
- 17. Czy używam klauzuli catch C++, rodziny klas wyjątków i destrukcji?
- 18. Jak programowo ustawić źródło danych dla formantu ASP.NET ReportViewer?
- 19. Jak edytować ścieżkę klas (środowisko wykonawcze) w środowisku Eclipse?
- 20. Jak uzyskać ścieżkę do pliku zawartości w bibliotece klas
- 21. Jak ustawić ścieżkę dołączania pliku podczas uruchamiania skryptu z cmd
- 22. Jak ustawić ścieżkę katalogu głównego w trybie Angular, gdy używany jest znacznik BASE i HTML5Mode?
- 23. jak mogę dostać ResultCode gdy używam „startActivity” zainstalować apk
- 24. Jak rozwiązać "porzuconą transakcję", gdy używam "hg push"?
- 25. Jak zarządzać istniejącymi repozytoriami, które pojawiają się, gdy używam Subversive?
- 26. Jak poprawnie ustawić ścieżkę plików cookie JSESSIONID za odwrotnym proxy
- 27. Jak ustawić ścieżkę integracji Perla dla modułów skryptu CGI?
- 28. Jak ustawić ścieżkę Cygwin PATH, aby znaleźć javac?
- 29. jak ustawić identyfikator w jquery ui Źródło zdarzenia
- 30. Jak ustawić tryb skorupy Emacsa jako źródło mojego pliku profilu?
Satheesh pisał to jest odpowiedź: "Czy mógłbyś udostępnić swoje opakowanie kompilatora (link nie działa) z góry dziękuję." –
dziękuję za ten post młyn, walczyłem z tym od wieków i to była odpowiedź ... otuchy :) – flexinIT
BTW, opcja 'classpath'' JavaCompiler' nie "rozumie" symboli wieloznacznych. Więc każdy 'jar' musisz dodać bezpośrednio w tym ciągu. – Andremoniy