2016-07-22 2 views
1

현재 게임을 개발하려고하는데 파일 경로를 내보낼 때 파일 경로가 변경됩니다. 파일 경로 내보내기 변경시

package random; 
import java.awt.Graphics; 
import java.awt.image.BufferedImage; 
import java.io.File; 

import javax.imageio.ImageIO; 
import javax.swing.JFrame; 

public class Troll extends JFrame{ 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 4176461585360667597L; 
    public static BufferedImage img; 
    public static void main(String[] args){ 
     File f = new File("troll.png"); 
     try{ 
      if(f.exists()){ 
       System.out.println("ITS THERE! :D"); 
        img = ImageIO.read(f); 
      } else { 
       System.out.println("DOESNT EXIST, REAL PATH IS: " + f.getAbsolutePath()); 
      } 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 

     new Troll(); 

    } 
    public Troll(){ 
     init(); 
    } 
    public void init(){ 
     setSize(1200,800); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLocationRelativeTo(null); 
    } 
    public void paint(Graphics g){ 
     g.drawImage(img, 500, 350, this); 
    } 
} 

이클립스 (내가 사용하고있어 IDE)를 통해 실행

, 그것을 잘 실행의과 이미지를 보여주는 것 : 여기

는 코드입니다. jar2Exe 소프트웨어를 사용하여 jar2Exe로 변환하고 exe로 변환하면 이미지가 나타나지 않고 콘솔에 이미지의 절대 경로가 바탕 화면에 있다고 표시됩니다. 하지만 7-Zip을 사용하여 exe 파일을 열면 그림이 exe 파일에 있습니다.

사용자가 실행할 때 프로그램이 파일 경로를 찾고 바탕 화면에 있다고 생각하는 대신 이미지를 표시 할 수 있도록 어떻게 내 보내면됩니까? 나는이 희망

+0

두 답변 모두에서 언급되었지만 배포 시간까지 응용 프로그램 리소스가 포함 리소스가 될 것이므로 지금 당장 리소스를 액세스하는 것이 좋습니다. [tag : embedded-resource]는 파일이 아닌 URL로 액세스해야합니다. [info. URL을 구성하는 방법은 임베디드 리소스 페이지 (http://stackoverflow.com/tags/embedded-resource/info)를 참조하십시오. –

답변

1

당신은 항아리에 트롤 (LOL)

img = ImageIO.read(this.getClass().getResource("/troll.jpg")); 

되지 않는 경우, 자원 파일이 없습니다.


뿐만 아니라 그 링크를 참조하십시오 :

Thread.currentThread().getContextClassLoader().getResource("hello/yes.gif"); 
+0

그 대신에 exe로 보이지 않는 것을 사용하려고했습니다. – joey942

+0

어쩌면 시도해보십시오 (http://www.jar2exe.com/createdexe/integrate/protect) Thread.currentThread(). getContextClassLoader(). getResource ("hello/yes.gif"); – chikincrow

2

당신이 항아리로 게시 할 경우 http://www.jar2exe.com/createdexe/integrate/protect 다음 당신은 당신의 파일을 읽기 위해 항아리 별 API를 사용해야합니다. 예를 들어보십시오. How to read a file from a jar file? (그리고 그림을 jar 파일에 넣으려면 Eclipse를 구성해야한다.

또한 jar에있을 때 exe로 작동하는지 여부를 알려 주어야 문제가있는 곳을 좁히는 데 도움이됩니다.

+0

Java, 파일 등의 전체 부분에 조금 새로운 것이므로, 예를 들어 줄 수 있습니까? 당신이 저를 링크시킨 그 게시물에 대한 대답은 작동하지 않는 getResourceAsStream()을 사용하는 것이 었습니다. 내가이 잘못에 접근하지 않는 한 ... – joey942

+0

나는 단지 어리석은 순간을 보내고 있을지도 모른다. 단지 항아리에있을 때 그것이 작동하는지 알 수 있다는 것은 무엇을 의미 하는가? 항아리로 달리 겠다는거야? – joey942

+0

예. 항아리로 사용하는 것이 좋습니다. java -jar myfile.jar – TubesHerder

관련 문제