특정 패키지 수에서 다양한 Java 클래스로 구성된 Java로 응용 프로그램을 컴파일하려고합니다. 명령 줄에서, 나는 루트 패키지와 유형이 포함 된 폴더로 변경할 수 있습니다임의의 하위 폴더에 저장된 패키지에서 프로그래밍 방식으로 Java 클래스 컴파일
javac rootpackage/subpackage/*.java
또는
javac rootpackage/*/*.java
내 rootpackage의 모든 주요 하위 패키지에있는 모든 자바 클래스를 컴파일 할 수 있습니다.
그러나 Java 응용 프로그램 내에서이 작업을 수행하고 싶습니다. (우리는 단위 테스트를 포함하는 학생들에게 어플리케이션을 제공하고, 유닛 테스트는 코드에 대해 실행해야하며, 테스트 결과를 '워터 마크 처리'된 소스 파일을 포함하는 JAR 파일을 만듭니다. 이 작업은 정상적으로 진행되지만 테스트 된 클래스 파일은 제출 된 소스 파일에서 생성되므로 프로그래밍 방식으로 Java 소스를 컴파일하는 것이 좋습니다.
각 학생이 루트 패키지를 임의의 위치에 저장한다는 점에서 문제가 있습니다. 파일 위치를 JavaCompiler (javax.tools)로 전달할 수없는 것 같습니다.
그렇다면 임의로 배치 된 루트 패키지를 올바르게 컴파일하는 방법에 대한 힌트를 줄 수 있습니까?
건배
리처드
추가 정보
:학생이 폴더 구조를 가지고 :
루트 패키지가 포함/home/student/work/java/myproject/
. 그들은 응용 프로그램을 시작합니다 (아마도이 폴더에 저장되어 있으므로 문제가되지 않지만 다른 곳에 저장되어있을 가능성이 높습니다). 루트 패키지가 들어있는 폴더를 묻습니다. 입력 후 학생들은 패키지에있는 파일을 컴파일하는 JAR 생성 버튼을 클릭하고 새로 컴파일 된 파일에 대한 테스트를 실행 한 다음 JAR을 작성합니다.
이 문제를 생각하면서 해결책은 학생들에게 루트 패키지가 들어있는 폴더에 'create JAR'응용 프로그램을 설치하도록 할 수 있습니다.
package com.blah.blah.assignment;
즉, 패키지 이름의 시작을 찾아 다음부터 검색 경로의 첫 번째 디렉토리를 찾습니다
학생들이 자신의 jar'ing을 수행하지 못하게 할 수 있습니까? ... 그러면 도구는 항아리를 업로드하는 곳이되어 테스트를 실행하여 jar 도구를 만드는 데 어려움을 겪습니다. jar를 사용하는 방법에 대해 교육합니다 (상당히 중요하다고 생각합니다). –
또는 GUI에서 일종의 GUI가 붙어있는 것처럼 들리므로 JFileDialog를 사용하여 소스 경로를 선택할 수 있습니다. –