“Không tìm thấy tệp” khi chạy dự án LibGDX mới


115

Tôi đang cố gắng học LibGDX, tôi cài đặt tất cả phần mềm được liệt kê ở đây với Eclipse 4.3 mới trên mac OS X Maverick được định dạng mới.

Mọi thứ diễn ra suôn sẻ, sau khi khởi động lại, tôi tải xuống và thực thi gdx-setup.jar, điền vào biểu mẫu và nhập vào Eclipse.

Không có lỗi, không có cảnh báo, khi tôi cố gắng chạy máy tính để bàn. (Nhấp chuột phải vào dự án máy tính để bàn, Chạy dưới dạng -> Ứng dụng Java).

Tôi mắc lỗi này

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)

Tôi đã tìm thấy rất nhiều vấn đề tương tự ở đây, tôi đã thử tất cả đều không có kết quả tốt ... Đêm qua tôi đã tìm thấy điều này , rất tuyệt, tôi có Java 1.8 mới nhất, một chiếc mac và Eclipse hoàn toàn phù hợp ...

Nhưng không thành công, tôi thử với Java 1.6 và 1.7, Luôn bị lỗi như vậy (Không tìm thấy tệp, tôi giữ Java 1.7)

Tôi bắt đầu thực hiện một số gỡ lỗi, đây là sửa đổi duy nhất của tôi đối với mã gốc được tạo ra bởi quá trình nhập.

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();
    }
}

Điều kỳ lạ là pathLocal bằng "". Có bình thường Gdx.files.getLocalStoragePath () không trả về (chuỗi trống) không?

Ngoài ra

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

Hoạt động tuyệt vời. chỉ có một địa phương đưa ra lỗi, cũng là isLocal và isExternal trả về true.

Và tôi cố gắng một nhiều kết hợp, như /assets/data/badlogic.jpg, /assets/badlogic.jpg, /data/badlogic.jpg, data/badlogic.jpg, và badlogic.jpg.

Hình ảnh badlogic.jpg ở đó và tôi đặt nó ở nhiều nơi để chắc chắn.

Và bây giờ lý do tại sao tôi ở đây để được trợ giúp là tôi chỉ thử tất cả các bước tương tự trên PC và mọi thứ đều hoạt động tốt.

Có vấn đề gì với chiếc mac mới của tôi và nó đang cài đặt?


Thật kỳ lạ ... bạn đã làm mới dự án android trong Eclipse sau khi thêm nội dung chưa? Bởi vì điều đó xảy ra với tôi rất nhiều khi tôi thêm một tài sản mới vào thư mục tài sản trong dự án android và sau đó quên làm mới dự án android trong Eclipse, nó sẽ gây cho tôi lỗi nói rằng hình ảnh không có ở đó ...
florianbaethge

Câu trả lời:


230

Từ libgdx wiki

Khi bạn chạy Dự án máy tính để bàn

Ứng dụng sẽ bị lỗi lần đầu tiên. Mở Cấu hình Chạy mà bạn vừa tạo và đặt thư mục làm việc thành thư mục android / asset /!

liên kết dự án máy tính để bàn của bạn với thư mục nội dung android?

Vào Run => Run Configurations .. => chọn DesktopLauncher , Arguments Tab => Working Directory => Other sau đó duyệt đến yourproject-android / asset / và nhấp vào Apply => Run

nhập mô tả hình ảnh ở đây


cũng để giúp những người khác có cùng vấn đề, để làm cho cùng một thư mục hoạt động với bản dựng Android, chúng ta cần nhấp chuột phải vào thư mục Android / asset và Nhấp vào Đường dẫn đã xây dựng và chọn Thêm nó.
lebill

10
Điều đó đã làm điều đó cho tôi quá. Thật tiếc khi LibGDX gặp phải vấn đề này ngay từ đầu - đó là một hệ thống tuyệt vời, nhưng những thứ như vậy sẽ khiến các nhà phát triển không kiên nhẫn chút nào sợ hãi.
Richard

Tuyệt vời! Sẽ không hợp lý hơn nếu libgdx thay thế hình ảnh bằng một trường văn bản cho dự án mẫu giải thích để làm điều này? Tôi đoán một tìm kiếm đơn giản trên google sẽ dẫn mọi người đến đây nhưng không kém phần nào, đó là một điều kỳ lạ khi gặp phải
Kai Qing

1
Trong trường hợp bạn không có thư mục android / asset, việc đặt thư mục desktop / tài sản theo cách tương tự đã hoạt động với tôi.
Fredrik Andersson

1
Xin lưu ý rằng đây không phải là một giải pháp mà là một cách giải quyết. Nó sẽ hoạt động trong hầu hết các trường hợp, nhưng không phải trong tất cả chúng. Ví dụ: nếu bạn định tạo một tập bản đồ kết cấu từ mô-đun Desktop, bạn sẽ phải tính toán lại các đường dẫn, theo mặc định là liên quan đến mô-đun Desktop.
Fran Marzoa

75

Đối với những người trong chúng ta sử dụng Android Studio hoặc IntelliJ IDEA, bạn cần làm theo các bước sau:

  1. Chọn Chạy -> Chỉnh sửa Cấu hình từ menu

  2. Trong hộp văn bản "Thư mục làm việc:", nối "/ android / asset" vào đường dẫn.

Lưu ý rằng nếu bạn thực hiện các tác vụ với gradle, đây không phải là vấn đề. Các tệp gradle.build được định cấu hình để sử dụng thư mục nội dung từ mô-đun android.


13

Lưu ý rằng các câu trả lời trước đó sẽ không hoạt động đối với những người dùng bỏ chọn hộp "Android" khi thiết lập. Thực sự phải có một thư mục nội dung mặc định được cài đặt cho những người không quan tâm đến việc triển khai cho Android.


5
Đúng và chính xác, chỉ cần chạy vào nó; thiết lập thư mục làm việc trên Máy tính để bàn thành thư mục nội dung trong lõi phù hợp với tôi.
naftalimich

@naftalimich Vâng, tôi nghĩ tài sản thực sự phải là yếu tố cốt lõi. Tôi hiểu tại sao họ lại làm như vậy, vì plugin android gradle muốn họ ở đó và họ không muốn xử lý việc sao chép mọi thứ mỗi bản dựng / xử lý các vấn đề đồng bộ hóa. Nhưng điều này thực sự nên được giải quyết.
EntangledLoops

11

Đối với những người sử dụng Intellij IDEA:

  1. Chạy -> Chỉnh sửa cấu hình
  2. Ở phía bên trái, chọn: Application -> DesktopLauncher
  3. Trong "Cấu hình" -Tab, đảm bảo "Thư mục làm việc" chọn đường dẫn android / asset của bạn

3
Bạn có thể đề cập: 1) Điều này yêu cầu bạn trước tiên phải tạo một cấu hình máy tính để bàn. 2) Điều này giả sử bạn đã chọn android khi tạo dự án ban đầu của mình. 3) Câu trả lời này đã được Code-Apprentice ở trên cung cấp dưới dạng hướng dẫn cho Android Studio, được xây dựng trên IntelliJ IDE.
EntangledLoops

6

Đây là cách bạn khắc phục sự cố đúng cách mà không cần thao tác với thư mục làm việc:

Vấn đề là thư mục tài sản không được đánh dấu chính xác là resourcesthư mục cho bản dựng gradle. Để khắc phục điều này, bạn phải thêm dòng sau vào ./core/build.gradletệp bản dựng:

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

Tệp của tôi sau khi thiết lập sạch sẽ với phiên bản libGDX gần đây trông giống như sau:

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"
}

1

Tôi sử dụng một giải pháp khác.

Thay vì tạo cấu hình chạy ứng dụng, hãy tạo cấu hình bản dựng Gradle. Nhiệm vụ là desktop:run. Khi nó được thực thi, trò chơi (nên) khởi chạy và tồn tại mà không gặp sự cố, và các tài nguyên sẽ được tìm thấy.

Tôi không chắc chính xác tại sao, nhưng khi một tác vụ Gradle được chạy như vậy, các tài nguyên sẽ được tìm thấy. Khi cấu hình chạy ứng dụng được sử dụng (không có sửa đổi như câu trả lời được chấp nhận hiện tại), cấu hình đó bị treo vì không thể tìm thấy tài nguyên.


0

Tôi chưa có dự án Android. Giải pháp của tôi là thêm thư mục tài sản vào Đường dẫn xây dựng Java-> Thư viện dưới dạng Thư mục lớp. Ngoài ra, hãy kiểm tra thư mục tài sản trong Java Build Path-> Order and Export để đưa nó vào các dự án khác.


0

Bạn có thể kiểm tra đường dẫn của Nội dung trong Thư mục đang hoạt động hoặc các tài nguyên được liên kết.


0

Tôi đã gặp sự cố tương tự trong IntelliJ và tôi chưa tạo dự án libgdx cho Android (tùy chọn Android không được đánh dấu là đã chọn) và tôi vẫn gặp lỗi tương tự. Thay vì liên kết thư mục làm việc với "/ android / asset /", hãy liên kết nó với " / core / asset " và nó hoạt động tốt đối với tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.