2012-05-21 2 views
0

NMAP 실행 파일을 실행하고 완료 될 때까지 기다리는 빠른 Java 래퍼를 작성했습니다. Eclipse를 사용하고 있습니다. NMAP 소스/실행 파일 을 Java Jar 파일에 포함시켜 자체 패키지를 포함하고 싶습니다.Java + jar 파일

Eclipse 내에서 NMAP 폴더 계층을 추가했습니다. 이클립스 내에서 NMAP 유틸리티에서 올바르게 Java가 실행되고 종료하기 전에 유틸리티가 끝날 때까지 기다리는 것을 볼 수 있습니다.
지금까지 그렇게 좋았습니다. 그런 다음 Eclipse와 함께 JAR 파일을 내 보냅니다. NMAP 폴더 계층 구조가 표시됩니다. 그러나 JAR 파일을 실행하려고하면 nmap.exe를 찾는 데 문제가 있습니다. jar 파일로 외부 실행 파일을 호출 할 수 있습니까? 그렇지 않다면 내 옵션은 무엇입니까? 그렇다면 Eclipse에서 jar 파일을 찾을 때 jar 파일에서 찾을 수없는 이유는 무엇입니까?

감사합니다.

답변

1

일반 파일로 액세스하기 전에 .exe 및 필요한 지원 파일을 디스크에 추출해야합니다 (표준 방법을 통한 실행에 필요합니다.) 항아리에있는 클래스 파일 중 하나에서 getResourceAsStream()을 사용하여 항아리에서 파일로 리소스를 복사하는 방법의 예제를 찾을 수 있습니다.

일단 추출, 당신이 실행할 수있는 당신이 지금하고있는대로 (당신이 당신의 OS에 따라 등 실행 권한을 보장해야 할 수도 있습니다)입니다

1
은 "기본 프로그램을 실행"기능은 EXE를 호출하는 방법을 이해하지 못하는

-ZIP 또는 JAR과 같은 다른 파일 내부의 파일.

이렇게하려면 파일 시스템 위치에 파일을 추출하여 거기에서 호출해야합니다. 리눅스 배포본 (PowerPC? 다른 라이브러리 버전 등)의 다양성으로 인해 사용자에게 직접 설치하고 직접 가져 오기를 요청해야합니다.

1

제 생각에 jar 파일에 임베드 된 실행 파일을 실행할 수 없습니다.

한 가지 해결책은 실행 파일을 jar 파일에 포함시키는 것입니다. 그런 다음 getClass().getResourceAsStream("/path/to/executable")을 사용하여 바이트를 검색하고 임시 파일 (File.createTempFile())로 출력하십시오. UN * X 시스템에서는 실행하기 전에 chmod u+x file을 사용해야합니다. 결국 임시 파일을 삭제하거나 파일을 한 번 만들고 다시 사용할 수 있으며 deleteOnExit()을 호출 할 수 있습니다.

물론이 솔루션은 모든 플랫폼에서 작동하는 실행 파일이 있음을 의미합니다.

"실행 파일"이 jar 파일에 없기 때문에 솔루션이 eclipse에서 작동하는 것 같습니다.

0

Nmap은 상업용 소프트웨어에서 사용하기에 자유롭지 않으므로 배포 방법에주의해야 할 수도 있습니다.

Java 용 Nmap을 호출하는 오픈 소스 라이브러리가 있지만 코드를 실행하는 OS에 Nmap이 설치되어 있다고 가정합니다. 이 API는 Nmap4j이며 sourceforge.net에 있습니다.