2012-06-30 1 views
0

일부 실행 파일 읽기, 쓰기 및 실행과 같은 파일에 대한 처리를 수행하는 일반 Java 클래스 (JSP 또는 Servlet도 아닙니다)가 있습니다. 각 파일의 상대 경로를 아는 방법?Java EE 프로젝트의 상대 경로 가져 오기

저는 약 getClass().getResourceStream()을 알고 있지만 파일을 읽는 경우에만 유용합니다. 그리고 나는 getServletContext().getRealPath()에 대해 알고 있지만 내 코드는 서블릿이 아닌 일반 Java 클래스에 있습니다.

내가 다음

String relativePath = "path/to/exe"; 
Runtime.getRuntime.exec(relativePath); 

답변

1

는 그리고 나는 약 getServletContext().getRealPath()을 알고 있지만 내 코드는 그냥 자바 클래스에 그 결과를 전달합니다 일반 자바 클래스하지 서블릿

입니다. 배포 된 WAR 로컬 디스크 파일 시스템에 확장되지 때 getRealPath()가 대신 메모리에, null가 반환

String desiredPath = calculateItSomehowBasedOn(getServletContext().getRealPath("/")); 
yourJavaClass.executeExe(desiredPath); 

참고. 일부 프로덕션 서버 구성이이를 수행합니다.

exe ​​파일의 위치를 ​​구성 파일 설정으로 만드는 것이 훨씬 좋습니다. 예 :

path.to.exe = /absolute/path/to/exe 

이 구성 파일은 클래스 경로에 배치되거나 경로가 클래스 경로에 추가 될 수 있습니다. 참고 항목 : Where to place and how to read configuration resource files in servlet based application?

0

질문을하고 싶습니다 자바 SE가 아닌 자바 EE를 해결하기 위해 보인다. 귀하의 "exe"파일이 귀하의 자바 프로젝트에 상대적으로 위치하고 있다고 가정합니까? 절대 경로를 얻으려면 다음을 사용할 수 있습니다.

File f = new File("path/to/exe"); 
String exePath = f.getAbsolutePath(); 

그런 다음 명령을 실행하는 데 절대 경로를 사용할 수 있습니다. 참고 : JavaDoc of File.

+0

아니요 J2EE와 관련된 문제가 없습니다. 이 코드는 J2SE에서 잘 작동하지만 J2EE 응용 프로그램의 루트 디렉토리는 프로젝트 자체이기 때문에 J2EE 응용 프로그램에이 코드를 작성하면 내 J2EE의 루트 디렉토리가 홈 디렉토리이므로 오류가 발생합니다. –

+0

그것은 나를 위해 불분명했습니다. "일반 Java 클래스"및 "일반 Java 클래스"는 J2EE 응용 프로그램처럼 들리지 않았습니다. 질문에 "오류"를 추가하는 것은 어떻습니까? 뭐하고 있니? 어떤 유형의 J2EE 응용 프로그램이 있습니까? – Behe