Possible Duplicate:
Executing a shell script inside a jar file. How to extract?내가 '엔진'패키지 내에서 내 JAR 파일로 패키지 쉘 스크립트가 JAR
내에서 쉘 스크립트 번들을 실행 자바는.
내 프로그램에서 Process 및 ProcessBuilder를 사용하여 쉘 명령을 실행 중입니다. 이 모든 것이 잘 작동합니다.
내 컴퓨터에서 쉘 스크립트 경로를 지정하면 프로그램이 정상적으로 작동합니다. 그러나 나는 내 JAR로 쉘 스크립트를 패키지하고 이런 식으로 액세스하는 경우 :이 수 없습니다 생각하기 시작하고
java.io.IOException: Cannot run program "file:/Users/USERNAME/Desktop/Application-Name.jar!/engine/shell-script.sh": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
at engine.Download$1.run(Download.java:39)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:53)
at java.lang.ProcessImpl.start(ProcessImpl.java:91)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 5 more
: 프로그램을
scriptLocation = this.getClass().getResource("/engine/shell-script.sh").toString();
그리고 실행 한 후 나는 다음과 같은 오류가 발생합니다 이 쉘 스크립트를 응용 프로그램의 일부로 제공하고 싶습니다. 수행 할 수 있습니까? 사전 모두에
감사합니다.
======== UPDATE는 ==========
나는 결국이 문제를 해결했다. 쉘은 JAR 번들 내에서 스크립트를 실행할 수 없으며 Java가 아니라 쉘입니다.
자바는 createTempFile() 메소드 (애플리케이션이 종료되면 파일을 삭제할 수있는 옵션 포함)를 호출하고 액세스하여 액세스하려는 JAR 번들 내에 파일을 작성합니다. 이 임시 파일에. 그런 다음 로컬 파일 시스템에 쉘 스크립트가 있으며 스크립트를 실행할 수 있습니다.
답변을 주셔서 감사합니다. jar 파일에서 임시 위치로 셸 스크립트를 추출한 다음 거기에서 추출하는 방법을 알 수 있습니다. 어떻게 할 수 있는지 알고 있습니까? 이것을하거나 링크를 알고 있습니까? 귀하의 답변 주셔서 감사합니다! – Cristian
다른 곳에서 언급했듯이 다음을 할 수 있습니다. unzip -p JARFILE SCRIPTFILE | 세게 때리다. 이것은 기본적으로 jar 파일을 추출하지만 실제로 파일을 생성하지는 않습니다. – Jay