2014-07-23 8 views
0

실행 가능한 jar 파일로 컴파일 된 응용 프로그램이 있습니다. app.jar을 말하면됩니다. 내가 이걸 실행할 때 네이티브 맥 애플리케이션처럼 보이는데, 내 스윙에 대한 제한된 지식을 연상케한다. 그런 다음 표시된 지침에 따라 jar 파일을 번들로 사용하기 위해 Java's appBundler을 사용했습니다. 갑자기 동일한 프로젝트가 AWT 응용 프로그램처럼 보이게됩니다 (훨씬 흐리게 처리되고 더 픽셀 화됨). 응용 프로그램이 작업 디렉토리로 내 사용자 드라이브 (~)를 보여줍니다 동안내 응용 프로그램은 Swing을 사용하는 jar 파일에도 AWT를 사용합니다. 왜?

이 외에도, jar 파일은 상위 폴더와 작업 디렉토리 (이 dist/app.jar을의 경우, dist는 작업 디렉토리입니다)와 함께 시작됩니다.

Heres는 예제 프로그램 난 번들하고 그 :

package test; 

import java.io.File; 

import javax.swing.JOptionPane; 

public class Test{ 
    public static void main(String[] args) { 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      JOptionPane.showMessageDialog(null, new File(".").getAbsolutePath()); 
     } 
    }); 
    } 
} 

항아리 스윙처럼 보이고. "/ 사용자/ME/문서/응용 프로그램/DIST의 /"을 말한다 응용 프로그램은 AWT와 비슷하지만 "/ Users/me /"라고 표시됩니다.

전환 이유가 무엇입니까? 스윙과 jar 파일의 디렉토리를 선호하지만, 응용 프로그램으로 포맷해야합니다.

+0

[모양 및 느낌 설정 방법] (http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html)을보십시오. 시스템 모양과 느낌을 사용하도록 응용 프로그램을 초기화했는지 확인하십시오. – MadProgrammer

답변

0

어쩌면 AppBuilder에서 이상하게 보일 수도 있습니다. jar 명령으로 jar 파일을 만들었습니까?

http://docs.oracle.com/javase/tutorial/deployment/jar/build.html

+0

ant를 사용하여 항아리를 만듭니다. 왜 항아리가 잘 작동하는지! jar 명령은 작동하지만 명령 행을 통해서만 jar를 실행 가능하게 만드는 경향이 있습니다. 나는 컴퓨터가 아닌 사람들을 위해 앱을 만들고 있는데, 그래서 나는 그것들을 묻지 않는다. 또한, 이것은 대답이 아닌 주석이어야합니다. – zigzaugg

+0

전화하세요. 내 잘못이야. AppBuldler의 Swing/AWT 문제에 대해 2 년 전부터 [이 블로그 게시물] (http://www.intransitione.com/blog/take-java-to-app-store/)을 찾았습니다. 다시 스윙과 AWT 응용 프로그램은 freetype lib에 대한 종속성으로 인해 열리지 않을 것입니다. 아마도 문제가 해결되었지만 여전히 문제가 있습니다. 이 블로그 게시물을 작성한 사람은 AppBundler의 포크로 만든 것처럼 보입니다. 어쩌면 당신은 그 총을 줄 수 있습니다 ... – Aaron

+0

나는 그것을 시도, 그것은 여전히 ​​제대로 실행되지 않습니다. 포크가 문제를 일으키기 위해 만들어 졌던 것처럼 보입니다.하지만 문제는 아닙니다. 그것은 부적절하게 실행됩니다. – zigzaugg

1

...

public void run() { 
    try { 
     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
    } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
     ex.printStackTrace(); 
    } 
    //... 

이 그것을 다른 설정을 무시 있는지 확인해야합니다 ... 모양을 강제로 시도하고 "시스템"모양을 사용하고 느낌을 느낄

자세한 내용은 How to Set the Look and Feel을 참조하십시오.

+0

위의 프로그램에이 내용을 추가하려고 시도했지만 번들링 후에 같은 문제가 발생했습니다. 눈에 띄는 차이는 없었습니다. – zigzaugg

+0

다음은 뭔가 잘못되었습니다. Mac OS에서는 기본 모양과 느낌이 시스템 모양과 느낌을 사용하도록 설정되어있는 것 같습니다. 그것은 귀하의 코드가 모양과 느낌을 내부적으로 변경하는 것이 가능합니다 – MadProgrammer

+0

하지만 위의 코드는 내 질문에 내가하고있는 전부입니다! 그것은 그것을 바꿀 수 있습니까? – zigzaugg