[java] 새 LibGDX 프로젝트를 실행할 때 “파일을 찾을 수 없음”

LibGDX를 배우려고 노력하고 있으며 여기 에 나열된 모든 소프트웨어를 새로운 형식의 Mac OS X Maverick에 새로운 Eclipse 4.3과 함께 설치합니다 .

재부팅 후 모든 것이 원활하게 진행되고 gdx-setup.jar를 다운로드하여 실행하고 양식을 채우고 Eclipse로 가져옵니다.

데스크탑을 실행하려고 할 때 오류도 경고도 없습니다. (데스크톱 프로젝트, 실행 도구-> Java 응용 프로그램을 마우스 오른쪽 단추로 클릭).

이 오류가 발생했습니다

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: badlogic.jpg
at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140)
at com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)
at com.badlogic.gdx.graphics.Texture.load(Texture.java:130)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:121)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:100)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:92)
at com.diesel.bugs.DieselBugs.create(DieselBugs.java:21)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)


Caused by: com.badlogic.gdx.utils.GdxRuntimeException: File not found: badlogic.jpg (Local)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:134)
at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:218)
at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:137)

나는 여기에서 비슷한 문제를 많이 발견했습니다. 좋은 결과없이 모두 시도해 보았습니다. 어젯밤 나는 이것을 발견 했습니다 . 아주 멋지네요. 최신 Java 1.8, Mac 및 Eclipse가 완벽하게 맞습니다.

하지만 성공하지 못했습니다. Java 1.6 및 1.7로 시도합니다. 항상 동일한 오류 (파일을 찾을 수 없음, Java 1.7을 유지했습니다)

디버그를 시작합니다. 여기서는 가져 오기로 생성 된 원본 코드를 수정했습니다.

package com.diesel.bugs;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class DieselBugs extends ApplicationAdapter {
    SpriteBatch batch;
    Texture imgExternal,imgLocal;

    @Override
    public void create () {
        batch = new SpriteBatch();
        String pathLocal = Gdx.files.getLocalStoragePath();
        String pathExternal = Gdx.files.getExternalStoragePath();
        Boolean isExternal = Gdx.files.isExternalStorageAvailable();
        Boolean isLocal = Gdx.files.isLocalStorageAvailable();
        imgExternal = new Texture(Gdx.files.external("/Desktop/badlogic.jpg"));
        imgLocal = new Texture(Gdx.files.local("badlogic.jpg"));
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        batch.draw(imgExternal, 0, 0);
        batch.end();
    }
}

이상한 점은 pathLocal이 “”와 같다는 것입니다. Gdx.files.getLocalStoragePath ()가 아무것도 반환하지 않는 것이 정상입니까 (빈 문자열)?

또한

imgExternal = new Texture(Gdx.files.external("/Desktop/badlogic.jpg"));

잘 작동합니다. 로컬에서만 오류가 발생하고 isLocal 및 isExternal이 true를 반환합니다.

그리고 조합 등의 많은 시도 /assets/data/badlogic.jpg, /assets/badlogic.jpg, /data/badlogic.jpg, data/badlogic.jpg,와 badlogic.jpg.

이미지 badlogic.jpg가 있고 확실히하기 위해 여러 곳에 배치했습니다.

이제 제가 도움을 청하는 이유는 PC에서 모든 단계를 동일하게 시도하고 모든 것이 잘 작동하기 때문입니다.

새 Mac에 무엇이 문제이며 설정되어 있습니까?



답변

libgdx 위키에서

Desktop Project를 실행할 때

응용 프로그램은 처음에 실패합니다. 방금 만든 Run Configuration을 열고 작업 디렉토리를 android / assets / 디렉토리로 설정하십시오!

데스크톱 프로젝트를 Android 자산 폴더에 연결 하시겠습니까?

로 이동하여 실행 => 실행 구성 .. => 선택 DesktopLauncher는 , 인수 탭 => 작업 디렉토리 => 기타 다음에 찾아 프로젝트 _ – 안드로이드 / 자산 / 클릭 적용 => 실행

여기에 이미지 설명 입력


답변

Android Studio 또는 IntelliJ IDEA를 사용하는 경우 다음 단계를 따라야합니다.

  1. 메뉴에서 실행-> 구성 편집을 선택하십시오.

  2. “Working Directory :”텍스트 상자에서 경로에 “/ android / assets”를 추가합니다.

gradle로 작업을 실행하는 경우 이것은 문제가되지 않습니다. gradle.build 파일은 android 모듈의 assets 폴더를 사용하도록 구성됩니다.


답변

설정에서 ‘Android’체크 박스를 선택 취소 한 사용자에게는 이전 답변이 적용되지 않습니다. Android 배포에 신경 쓰지 않는 사람들을 위해 실제로 기본 자산 폴더가 설치되어 있어야합니다.


답변

Intellij IDEA를 사용하는 경우 :

  1. 실행-> 구성 편집
  2. 왼쪽에서 응용 프로그램-> DesktopLauncher를 선택합니다.
  3. “구성”-탭에서 “작업 디렉토리”아래에서 안드로이드 / 자산 경로를 선택합니다.

답변

이것은 작업 디렉토리를 가지고 놀지 않고 올바르게 수정하는 방법입니다.

문제는 자산 폴더가 resourcesgradle 빌드의 디렉토리 로 올바르게 표시되지 않았다는 것 입니다. 이 문제를 해결하려면 ./core/build.gradle빌드 파일 에 다음 줄을 추가해야 합니다.

sourceSets.main.resources.srcDirs = [ "assets/" ]

최신 libGDX 버전으로 새로 설정 한 후 내 파일은 다음과 같습니다.

apply plugin: "java"

sourceCompatibility = 1.6
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'

sourceSets.main.java.srcDirs = [ "src/" ]
sourceSets.main.resources.srcDirs = [ "assets/" ]

eclipse.project {
    name = appName + "-core"
}


답변

다른 솔루션을 사용합니다.

애플리케이션 실행 구성을 만드는 대신 Gradle 빌드 구성을 만듭니다. 작업은 desktop:run입니다. 일단 실행되면 게임이 실행되고 충돌없이 살아남 아야하며 리소스를 찾아야합니다.

이유는 정확히 모르겠지만 Gradle 작업이 이와 같이 실행되면 리소스가 발견됩니다. 응용 프로그램 실행 구성이 사용되면 (현재 허용 된 답변과 같은 수정없이) 리소스를 찾을 수 없기 때문에 충돌합니다.


답변

Android 프로젝트가 없습니다. 내 솔루션은 자산 폴더를 Java 빌드 경로-> 라이브러리에 클래스 폴더로 추가하는 것입니다. 또한 Java Build Path-> Order and Export에서 자산 폴더를 확인하여 다른 프로젝트에 포함 시키십시오.