2012-12-26 20 views
9

Tôi đang cố gắng để chạy các ứng dụng sau đó cố gắng để tải một tập tin (src/main/resources/test.txt) từ classpath:Làm thế nào tôi có thể thêm src/main/nguồn lực để classpath khi sử dụng exec mvn: java

package com.example; 

public class Main { 
    public static void main(String[] args) { 
     System.out.println(Main.class.getResource("test.txt")); 
    } 
} 

Khi tôi làm mvn exec:java -Dexec.mainClass=com.example.Main, tôi nhận được null được in trên dòng lệnh.

Vậy làm cách nào để nhận tệp trong src/main/resources được thêm vào đường dẫn lớp? Lưu ý rằng tôi đã chạy mvn package, đã kiểm tra số đã tạo target/test.jar và xác nhận rằng nó bao gồm test.txt ở cấp cao nhất.

Trả lời

6

Một dấu gạch chéo nên giải quyết nó

System.out.println(Main.class.getResource("/test.txt")); 

Mã của bạn sẽ làm việc nếu bạn đặt các tập tin test.txt dưới:

src/main/resources/com/example 
+2

Nếu bạn đặt test.txt vào com/example gói nó sẽ không làm việc. Để làm việc đó một cách chính xác, bạn cần đặt test.txt vào src/main/resources không có gì khác. – khmarbaise

+2

OK. Tôi nghĩ bây giờ tôi đã hiểu. Vì vậy, 'getResource' giải thích đường dẫn liên quan đến cá thể của lớp (vì vì' Main' nằm trong 'com.example', tôi đã vô tình tìm kiếm' src/main/resources/com/example/test.txt' thay vì 'src/main/resources/test.txt') – user1930555

+0

Câu trả lời thú vị. Tôi đã tự hỏi bản thân mình. – ktm5124

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