2012-08-26 39 views
19

tôi có mã này:Scala getClass.getResource() trả về rỗng

val url: URL = getClass.getResource("com/mysite/main/test.fxml") 

và nó luôn luôn trả null (hoặc Unit). Tôi chỉ có hai tác phẩm trong dự án:

MyProj/src/com/mysite/main/Test.scala 
MyProj/src/com/mysite/main/test.fxml 

và khi tôi chạy Test.scala giá trị url luôn là null.

Tôi vừa thử xây dựng lại dự án, tôi đang sử dụng IntelliJ IDEA. Tôi làm gì sai ở đây?

+1

bản sao có thể có của [IntelliJ: cách tạo các tệp không phải java cũng được sao chép vào thư mục bin?] (Http://stackoverflow.com/questions/11176969/intellij-how-to-make-non-java-files -copied-to-the-bin-directory-as-well) – CrazyCoder

Trả lời

26

Bạn có ba lựa chọn:

  • tận dụng lợi thế của đường dẫn tương đối để gói hiện tại của bạn (nơi Test.class là):

    getClass.getResource("test.fxml") 
    
  • bạn có thể sử dụng đường dẫn tuyệt đối:

    getClass.getResource("/com/mysite/main/test.fxml") 
    
  • hoặc tải qua ClassLoader (Lưu ý rằng nó luôn luôn bắt đầu từ root):

    getClass.getClassLoader.getResource("com/mysite/main/test.fxml") 
    

Trong IntelliJ IDEA, hãy chắc chắn bạn đã thêm ;?*.fxml đến:

Settings (Preferences trên Mac) | Compiler | Mẫu tài nguyên.

+3

Không, điều tương tự, nó trả về null. Tôi đã googled và thử những người, nhưng không ai trong số họ làm việc hoặc. – Tower

+1

@rFactor Hãy thử làm mới dự án. – Vulcan

+0

@rFactor: vì vậy nó phải là một cái gì đó với IDE của bạn. Tất cả các công việc trên, ít nhất là khi tôi đang sử dụng cấu trúc dự án IntelliJ và maven. Ngoài ra bạn có chắc 'Test.scala' có khai báo gói đúng không? Thư mục không đủ. –

3

Có thể nó không được sao chép vào thư mục/thư mục từ thư mục src /? Điều này xảy ra khi biên dịch lại, nhưng nếu bạn thả nó vào thư mục src/sau khi chương trình đã được biên dịch, IDE sẽ không biết.

+0

điều này giải quyết được vấn đề của tôi. Tôi chỉ phải sbt biên dịch sạch sẽ và sau đó nó có thể nhìn thấy các nguồn lực.Cảm ơn vì đã ngăn tôi lãng phí thêm thời gian nữa! – grasshopper

1

Trả lời muộn nhưng tôi chỉ gặp vấn đề tương tự. Nguyên nhân gốc là một mục nhập rootProject.name không chính xác trong settings.gradle của tôi. Một khi tôi đã sửa chữa, làm sạch, và xây dựng lại tài nguyên của tôi đã có thể tải bằng cách sử dụng getClass(). GetResource(). Hy vọng rằng sẽ giúp ai đó.

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