2013-10-12 2 views
0

이동식 드라이브에서 실행되도록 설계된 Java 응용 프로그램이 있습니다. USB Disk Ejector에서 허용하는대로 프로그램을 실행하는 드라이브를 안전하게 제거 할 수있는 버튼을 추가하고 싶습니다. 그러나, 프로그램을 실행하면 드라이브를 꺼낼 수 없으므로이 방법 (코드 현명)을 얻는 방법을 모르겠습니다. 나는이 프로그램이 오픈 소스라는 것을 알고 있지만, 내가 찾고있는 코드를 어디에서 찾을 지 모르며, 내가 배운 언어로 쓰여지지 않았다.USB Disk Ejector는 어떻게 작동합니까?

따라서 누군가 내 Java 응용 프로그램에서이 기능을 수행하는 방법을 찾도록 도와 주면 매우 감사하겠습니다. 명백하게 나는 단지 복사하고 싶지 않지만, 내가 알고있는 유일한 것은 내가 꺼내고 싶은 드라이브에없는 일종의 임시 스크립트를 제어해야한다는 것이다. 사전에

감사

답변

0

지금까지 내가 아는 한, 그것을 운영하는 등 배출/언 마운트 드라이브 등의 작업으로 순수 자바로이를 구현하는 것은 불가능 시스템 별 기본 자바 라이브러리에 포함되지하는 보통 가장 낮은 공통 분모만을 지원합니다. 스크립트/배치 파일을 실행하거나 네이티브 코드를 실행하여 플랫폼 특정 코드를 실행해야합니다. C에서 Java의 JNI 메커니즘을 사용합니다.

+0

임시 파일에서 실행할 계획 인 명령 줄을 통해 드라이브를 안전하게 제거 할 수있는 실행 파일이 있습니다. . 그러나 문제는 응용 프로그램이 실행되는 동안 드라이브를 꺼낼 수 없기 때문에 실행 파일을 실행하는 방법을 모르겠다는 것입니다. 어떻게 든 주 응용 프로그램이 종료 될 때까지 기다린 다음 드라이브를 안전하게 제거하려고 시도하는 스크립트를 시작해야하지만 실제로 코드를 작성하는 방법은 확실하지 않습니다. – Andy

0

다른 드라이브에서 응용 프로그램을 실행해야합니다. 나는 Java Web Start CD Install 가이드를 따를 것이며, USB 드라이브 나 CD와 마찬가지로 다른 미디어에서도 올바르게 작동 할 것입니다.

응용 프로그램을 Java Web Start 응용 프로그램으로 만들어야합니다. 실제로 소리보다 훨씬 쉽습니다. .jar 파일을 변경할 필요가 없으면 .jnlp 확장자를 가진 작은 XML 파일을 만들어 .jar 파일 옆에 배치하면됩니다. Java Web Start 및 JNLP 파일에 대한 정보는 the tutorial과 해당 페이지의 맨 아래에있는 링크에서 찾을 수 있습니다.

안전 제거를 수행하는 외부 실행 파일은 응용 프로그램 .jar 파일에 포함될 수 있습니다. .jar 파일을 임시 파일로 복사하여 실행할 수 있습니다.

Path safeRemovalProgram = Files.createTempFile(null, ".exe"); 
try (InputStream stream = 
     MyApp.class.getResourceAsStream("saferemoval.exe")) { 
    Files.copy(stream, safeRemovalProgram, 
     StandardCopyOption.REPLACE_EXISTING); 
} 
safeRemovalProgram.toFile().setExecutable(true); 

ProcessBuilder builder = 
    new ProcessBuilder(safeRemovalProgram.toString()); 
builder.redirectOutput(ProcessBuilder.Redirect.INHERIT); 
Process safeRemovalProcess = builder.start(); 
+0

답장을 보내 주셔서 감사합니다. 나는 개념을 이해하고 그것이 작동 할 수 있다고 생각하지만 Web Start가 응용 프로그램의 이미지와 이식성을 손상시켜 'exe'로 랩핑되고 이동식 드라이브에서 실행되기를 바랍니다. 나는 Web Start를 사용하여 드라이브에서 실제로 아무것도 실행하지 않는다고 추측하고있다. – Andy

+0

CD 설치 링크는 install.bat (또는 setup.bat 등)을 만드는 방법을 설명합니다. 원한다면 자동 실행 기능을 작동하게 만들 수 있다고 상상해보십시오. 그러나 클릭 한 번 실행 가능한 실행 파일과 동일한 사용 편의성을 보장하지는 못합니다. Web Start는 보통 (항상?) 응용 프로그램을 캐시하지만 Windows에서 원래의 가져 오기되지 않은 .jar 파일을 계속 유지할 것인지 여부를 모르겠습니다. – VGR

관련 문제