2013-01-13 2 views
0

외부 32 비트 라이브러리에 연결해야하는 Java 응용 프로그램을 작성했습니다.Mac에서 조건부 인수로 Java 응용 프로그램 실행

내 iMac (Intel)에서 -d32 옵션을 사용하여 jar 파일을 실행해야합니다.

내 Powerbook G4에서는 -d32 옵션없이 실행해야합니다.

두 Mac에서 실행되는 jar 파일 번들을 만들고 싶습니다. -d32 옵션을 사용할지 여부를 결정하기 위해 테스트 할 조건이 있습니다.

어떻게 할 수 있습니까?

+0

단지 두 개의 번들을 만듭니다. 단지 하나의 다른'plist' 항목 일뿐입니다. 자동화가 가능할 수도 있습니다. 하나의 앱이 변경없이 다른 시스템과 호환 될 것으로 기대하는 것은 그리 적절하지 않습니다. – millimoose

답변

0

체크 아웃 System.getProperties()을 확인하십시오. 특히 os.arch. 지원되는 키 목록을 얻을 수 있습니다 here.

String arch = System.getProperty("os.arch"); 
System.out.println(arch); 

내 시스템에서 'amd64'가 출력됩니다. 아치를 알게되면 논리를 분리 할 수 ​​있습니다. 자바 7을 사용하여, 나는이 문자열을 전환 할 경우

String arch = System.getProperty("os.arch"); 
System.out.println(arch); 
switch(arch){ 
    case "amd64": 
     //do logic 
     break; 
    default: 
     //do default logic 
     break; 
} 
+0

OP가 논리를 분할하려고하지 않는다고 생각합니다. 32 비트 기본 라이브러리가 필요하다면 그의 프로그램은 amd64에서 작동하지 않을 것입니다. – millimoose

+1

저는 이것이 (직접적으로) 도움이 될지 확신하지 못합니다. JVM이 이미 생성되었지만 올바른 명령 줄 인수를 사용하여 다른 JVM을 시작할 수는 있지만 "명령 줄 인수가 무엇인지 잘 모르겠습니다"라는 메시지가 나타날 수 있습니다. – MadProgrammer

+0

@millimoose 나는 "내가 실행중인 아키텍처를 어떻게 결정할 수 있는가?"라는 글을 읽었습니다. 이것은 그것을 성취 할 것입니다. amd64를 내 아치로 사용했는데,이 머신을 실행하는 머신에 따라 현재 실행중인 아치를 반환합니다. 어둠 속에서 그 찌르기 - 나는 십자가 건축술을 결코 코딩하지 않았다, 그래서 이것이 궁극적으로 OPS 필요를 봉사 할 것이라는 점을 나는 모른다. –

1

나는 결국 내 질문에 대한 답변을 찾을 : 우선은 "-d32"옵션이 고려되지 않은 응용 프로그램이 열려있는 더블 클릭하여. 따라서 jvm을 실행하기 전에 아키텍처를 테스트 할 필요가 없습니다.

사실 매우 간단합니다. Intel Mac에서는 응용 프로그램이 만들어지면 응용 프로그램의 속성을 열고 "32 비트 모드에서 열기"를 선택하십시오. 그게 다야 !!!

관련 문제