이상한 문제가 있습니다. 나는 '어둠'(검은 색 Rect
)의 화면에서 이미지가 튀는 종류의 게임을 가지고 있고 마우스 커서는 어둠을 통해 빛나는 손전등을 나타냅니다 (타원을 뺍니다).문제를 읽는 중 BufferedImage
이제 .png
이미지 하나와 .wav
사운드 파일 하나가 있습니다. 둘 다 내 프로젝트 폴더의 "resources"폴더에 있고 파일 경로 "resources/myImage.png"
및 "resources/mySound.wav"
을 통해 액세스합니다.
Eclipse에서 프로그램을 실행할 때 모든 것이 잘 작동합니다 (Kepler btw 사용). 이미지는 잘 보이고 소리가 들리지만, 항아리로 내보내고 실행하면 바로 활성 프로그램 인 것처럼 몇 초 동안 프로그램 이름이 표시되지만 종료/충돌 직후에 프로그램 이름이 표시됩니다 . 터미널을 열고 java -jar /Users/MyUsername/Desktop/MyProg.jar
을 실행하면 같은 결과를 얻지 만 터미널의 충돌 로그로 연결됩니다. 그것은 읽
Aug 23, 2013 4:10:02 PM com.spotlight.TestPane <init>
SEVERE: null
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(ImageIO.java:1301)
at com.spotlight.TestPane.<init>(TestPane.java:62)
at com.spotlight.Spotlight$1.run(Spotlight.java:32)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.spotlight.TestPane.<init>(TestPane.java:69)
at com.spotlight.Spotlight$1.run(Spotlight.java:32)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.spotlight.TestPane.move(TestPane.java:169)
at com.spotlight.TestPane$1.actionPerformed(TestPane.java:51)
at javax.swing.Timer.fireActionPerformed(Timer.java:312)
at javax.swing.Timer$DoPostEvent.run(Timer.java:244)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
, 이미지 파일을 읽어 내 코드는 다음과 같습니다
- 내가 마우스 오른쪽 버튼으로 클릭
BufferedImage img; //... try { img = ImageIO.read(new File("resources/myImage.png")); } catch (IOException ex) { Logger.getLogger(Spotlight.class.getName()).log(Level.SEVERE, null, ex); }
다음과 같이 내 프로그램을 내보낼 방법은 내 프로젝트 폴더를 선택하고 "내보내기"를 선택하십시오.
- "Runnable Jar"옵션을 선택하십시오
- 나는 corr을 선택합니다 요법 실행 구성 나는 "생성 된 JAR로 추출 필요한 라이브러리"를 선택 올바른 수출 대상 (/Users/MyUsername/Desktop/MyProg.jar)에서
- "라이브러리 처리"를 찾아
- 는
- "다른 이름으로 저장 ANT 스크립트는 Finish "를
- 내가 클릭되지 않은 남아있다" "와 항아리 경고없이 발생
내가 SO 충돌 로그를 게시 정말 아닌 건 알지만 그렇다고 여기 난처한 상황에 빠진거야, 그래서 어떤 도움 감사합니다.
UPDATE
: 은 내가try/catch
블록에
System.err.println
문을 추가하고, 항아리의 내용을 추출하는 Unarchiver을 사용하고 리소스 폴더가 표시되지 않습니다. 리소스가 내보내지지 않으면 내 문제 일 수 있지만 해결 방법을 모르겠습니다.
배포 시점까지는 해당 리소스가 [태그 : 포함 리소스]가 될 수 있습니다. 그렇다면 리소스는'File' 대신'URL'에 의해 접근되어야합니다. 'URL'을 구성하는 방법은 태그에 대한 [info page] (http://stackoverflow.com/tags/embedded-resource/info)를 참조하십시오. –
http://stackoverflow.com/questions/18093092/xml-filenotfoundexception-using-slick2d-library-in-java/18093227#18093227 –
정보를 제공해 주셔서 감사합니다.하지만 자바에서 멍청이이고 좀 더 필요합니다. 도움. "URL imageURL;"을 가지고 있으며 나중에 imageURL = this.getClass(). getResource ("resources/images/myImage.png");'로 초기화됩니다. 내 미디어는 "resource"소스 폴더에 저장됩니다. "이미지"와 "사운드"라는 2 개의 폴더가 있습니다.프로그램을 실행하려고하면'java.lang.IllegalArgumentException : input == null'을 반환하는 파일을 찾을 수없는 것처럼 보입니다. 오류는'img = ImageIO '가있는 줄에서옵니다. read (imageURL);'. 텍스트 벽은 유감 스럽지만 아이디어는 없습니까? – ImagineBaggins