2013-02-05 58 views
12

Các pom.xml của dự án maven của tôi trông như sau:.getClass() getResourceAsStream() trong dự án maven

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>groupId</groupId> 
    <artifactId>artifactId</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <build> 
    <sourceDirectory>src/main/java</sourceDirectory> 
    <resources> 
    <resource> 
    <directory>src/main/resources</directory> 
    </resource> 
    </resources> 
    </build> 
</project> 

Trong thư mục src/main/nguồn Tôi có một tập tin gọi là thử nghiệm. Trong chính thư mục src// java Tôi có một lớp có chứa các dòng sau:

System.out.println(this.getClass().getResourceAsStream("test")); 

Khi dòng mã được chạy trong Eclipse, tôi nhận được như đầu ra

[email protected] 

Khi tôi xuất khẩu dự án như .jar và chạy nó tôi nhận được như là đầu ra

null 

Tôi có cấu hình bất cứ điều gì sai?

+3

Lớp học là bài kiểm tra đơn vị hoặc một lớp học thực sự hiệu quả? Tôi giả định một lớp học hiệu quả. Hơn bạn phải thay đổi getResourcesAsStream ("test") thành getResourcesAsStream ("/ test"); – khmarbaise

+0

@khmarbaise bạn đúng ... nhưng tại sao nó lại hoạt động với nhật thực ??? – ben75

+1

Tài nguyên thử nghiệm này có nằm trong thư mục * src/main/resources * hoặc trong thư mục * src/test/resources * có hoặc không có tên gói không? Hơn nữa, bạn không cần phải cấu hình thư mục * src/main/java * hoặc thư mục * src/main/resources *, vì chúng là mặc định trong maven. – khmarbaise

Trả lời

2

Tôi gặp lỗi này nhưng thông qua tấn Googling, tôi không thể tìm thấy giải pháp. Tất cả các câu trả lời là về đường dẫn, không ai quan tâm rằng Nó có thể chạy trong Eclipse nhưng không trong tệp jar đã xuất: (

Nhưng bây giờ tôi tìm thấy giải pháp, đơn giản như vậy: Trong Eclipse nhấp chuột phải vào dự án maven-> -> Java build path -> Nguồn Tab

Bạn có thể thấy một cái cây như:

MyProject/src 
    Ouput follder.. 
    Included (**/*.java) 
    Excluded 
    ... 

kích đúp vào Included (**/*.java), loại bỏ một trong những hiện rất Nó trở thành Included (All) Bây giờ xuất file jar :)

5

Dưới <build><resources> đảm bảo có <include> như bên dưới Điều này sẽ cho bạn biết rõ ràng để tìm nạp những tệp này và đưa nó vào trong bản dựng.

<build> 
    <resources> 
     <resource> 
      <directory>${basedir}/src/main/resources</directory> 
      <includes> 
       <include>**/*</include> 
      </includes> 
     </resource> 
    </resources> 
    ... 
    </build> 
+0

tôi tìm thấy cú pháp bao gồm hoạt động là '**/*' –

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