2014-07-24 14 views
10

tôi có một dự án java gradle dựa trên với cấu trúc nàyTiếp cận nguồn gradle từ Java

. 
├── myproject 
│  ├── src 
│  | └── main 
│  |   ├── java 
│  |   └── resources 
│  |    └── myresource.xml 
|  ├── build 
|  |  ├── classes 
|  |  | └── main 
│  |  |   └── myresource.xml 
|  |  ├── resources 

Tôi đang cố gắng để truy cập vào một số tập tin trong nguồn thư mục sử dụng một ClassLoader, như thế này

ClassLoader.getSystemClassLoader().getResoure("/myresource.xml"); 

nhưng không tìm thấy tệp.

Cách duy nhất tôi đã tìm thấy để truy cập các tập tin là bằng cách khám phá cấu trúc gọi của dự án

Path resourcesPath= FileSystems.getDefault().getPath(System.getProperty("user.dir"), "/src/main/resources/"); 

Bất kỳ ý tưởng về những gì tôi làm sai?

+0

khi nào bạn đang cố gắng thực hiện việc này? tức là khi nào mã đó thực thi? – Matt

Trả lời

11

Vâng, có vẻ như những khó khăn của tôi đến từ một vấn đề khác (tài nguyên không được sao chép vào các địa điểm thích hợp). Khi tôi đã giải quyết vấn đề đó, ClassLoader có thể tìm tài nguyên của tôi bằng cách sử dụng một trong hai hình thức sau:

ClassLoader.getSystemClassLoader().getResource("./myresource.xml"); 

ClassLoader.getSystemClassLoader().getResource("myresource.xml"); 
2

http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResource(java.lang.String)

Ví dụ một cái gì đó giống như MyMain.class.getResource("/config.txt") hoặc sử dụng đường dẫn tương đối khi thích hợp.

+0

Tôi đã sửa đổi câu hỏi gốc để làm rõ và hiểu rõ hơn – magomar

+0

Các lớp học được lưu trữ ở cùng một nơi, như tài nguyên. –

+0

Bạn là đúng @DmitryGinzburg, khó khăn của tôi là do các tài nguyên không được sao chép vào thư mục lớp, nó là một vấn đề liên quan đến việc sử dụng hoặc cấu hình của gradle trong IDE của tôi, tôi đoán (tôi mới đến gradle) – magomar

Các vấn đề liên quan