2010-08-22 3 views
4

32 비트 Java 라이브러리를 사용하여 try.jar 파일을 내 보냅니다. 클라이언트 사이트에서 64 비트 Java 라이브러리가 있습니다. try.jar가 64 비트 실행 파일을 실행할 수 있습니까?32 비트 내 보낸 jar 파일을 64 비트 Java 라이브러리를 사용하여 실행할 수 있습니까?

예를 들어, 나는 someExecutable 바이너리 64 비트와 32 비트 자바 라이브러리와이 코드를 사용하고 작동하지 않는 것 같다

Runtime rt = Runtime.getRuntime(); 
s = rt.exec("someExecutable"); 

있습니다. 이 문제에 대한 나의 해결책은 내 환경이 32 비트이기 때문에 32 비트 Java 라이브러리를 사용하여 try.jar을 내보내고 클라이언트 사이트에서 64 비트 라이브러리를 사용하여 try.jar을 실행하는 것입니다. 이 접근법이 맞습니까? 아니면 다른 제안입니까?

someExecutable을 직접 실행하면 (Java 관련 없음) 클라이언트 사이트에서 64 비트가 작동합니다. 클라이언트 사이트도 64 비트입니다. 하지만 s = rt.exec ("someExecutable")을 사용할 때; 그것은 작동하지 않습니다. java.sun.com을 통해 다운로드 된 java 라이브러리 (jre 실행 파일)는 이제 클라이언트 및 개발 사이트 모두에서 32 비트입니다. 클라이언트 사이트에 64 비트 libs를 설치했지만 개발 사이트에는 64 비트 libs를 설치하면 문제가 해결됩니까 ??

+1

정확한 오류는 무엇입니까? – clamp

+0

someExecutable을 실행하면 클라이언트 사이트에서 64 비트가 잘 작동합니다 (클라이언트 사이트도 64 비트입니다). 하지만 s = rt.exec ("someExecutable")을 사용할 때; 그것은 작동하지 않습니다. java.sun.com을 통해 다운로드 된 java 라이브러리 (jre 실행 파일)는 이제 클라이언트 및 개발 사이트 모두에서 32 비트입니다. 클라이언트 사이트에 64 비트 libs를 설치했지만 개발 사이트에는 64 비트 libs를 설치하면 문제가 해결됩니까 ?? – ogzylz

답변

2

프로그램을 실행하려는 운영 체제 아키텍처에서 사용 가능한 someExecutable 바이너리가 필요합니다.

이것은 Java와는 실제로 아무런 관련이 없습니다. Java가 수행하는 모든 작업은 기본 운영 체제로 가서 Runtime.exec()에 전달하는 문자열에서 명령을 실행하려고합니다.

+0

하지만 터미널에서 someExecutable을 실행하면 제대로 작동합니다. 그러나 Runtime.exec ("someExecutable")을 사용하면 작동하지 않습니다 ?? ı 문제가 Java libs 32 비트 및 someExecutable이 64 비트라고 생각하십니까 ?? 나는 틀릴 수도 있습니다 .. – ogzylz

+0

32 비트 대 64 비트는 여기서 문제가되어서는 안됩니다 ... 나는 그 생각의 문제로 당신이 문제를 흐리게하고 있다고 생각합니다. 오류 또는 스택 추적 또는 그와 비슷한 것을 표시 할 수 있습니까? –

+0

입력 스트림에 아무 것도 입력하지 않습니다. \ n someExecutable은 drecog -i ...입니다.(일부 다른 매개 변수) \ n 오류 스트림은 drecog의 설명서를 제공합니다. \ "./drecog"는 터미널에서 drecog의 설명서도 제공합니다. – ogzylz

0

언제 그렇게할까요? 100 % 자바 코드를 사용하는 경우 JRE는 다른 모든 것을 투명하게해야합니다.

4

Java librairies는 여기에서 문제가되지 않습니다. exec someExecutable을 원할 경우이 프로그램은 32 비트 환경의 경우 32 비트 여야합니다.

Java 라이브러리는 32 비트 또는 64 비트가 아니며 Java ByteCode입니다. 따라서 JVM 64 또는 32에서 정확히 같은 방식으로 실행될 수 있습니다.

+0

32 비트 Java 환경에서 64 비트 프로그램을 시작할 수 있습니다 (OS가 64 비트를 지원한다고 가정). Java 라이브러리에는 바이트 코드 외에도 원시 코드가 포함될 수 있습니다. –

+0

그럴 것이라고 생각했지만,이 경우에는이 문제로 인해 문제가 원시 코드에 있다는 것을 심각하게 의심합니다. –

+0

나는이 문제를 해결했다. 32/64 비트 문제와 관련이 없으며, 혼란 스럽습니다. 32 Java 환경에서 64 비트 프로그램을 시작하는 것이 좋습니다. 문제는 Runtime.exec ("drecog -i ...> rec.log"); "> rec.log"가 문제를 일으켰습니다. 그 부분을 삭제하면 잘 작동합니다. 나는 왜 "> rec.log"부분이 문제를 야기하는지 몰라. – ogzylz

관련 문제