2017-12-11 111 views
7

Tôi đang cố gắng nhập hdf.hdf5lib.H5 vào dự án maven của tôi trong NetBeans. Nó có này như dòng nhập khẩuhdf5 trong dự án maven

import hdf.hdf5lib.H5; 

như đề xuất ở đây: https://support.hdfgroup.org/products/java/JNI3/jhi5/index.html

Tuy nhiên, nó ném ngoại lệ này:

java.lang.ExceptionInInitializerError 
Caused by: java.lang.RuntimeException: Uncompilable source code - package hdf.hdf5lib does not exist 

NetBeans đã cảnh báo tôi về điều đó bằng cách nói tại dòng nhập khẩu "packadge không excist ". Vì vậy, tôi để cho nó "tìm kiếm phụ thuộc tại kho Maven". Nó tìm thấy một cái gì đó và nó thêm này vào pom.xml của tôi:

<dependency> 
    <groupId>org.hdfgroup</groupId> 
    <artifactId>hdf-java</artifactId> 
    <version>2.6.1</version> 
    <type>jar</type> 
</dependency> 

Thật không may nó giữ cảnh báo tại dòng nhập "packadge không excist" và ngoại lệ lỗi. Có vẻ như bổ sung này vào tệp pom.xml không làm gì cả.

Tôi là người mới bắt đầu trong tất cả những điều này, vì vậy có thể giải pháp là hiển nhiên, nhưng tôi không thể tìm thấy nó. Những câu hỏi này đã hẹn hò trở lại giữa năm 2012 và 2014, nhưng đã không giúp tôi:

http://hdf-forum.184993.n3.nabble.com/maven-repository-for-java-release-td4026938.html

http://hdf-forum.184993.n3.nabble.com/HDF-Java-on-Maven-td4025772.html

add hdf5 libs (java & c++) to public maven repository?

Theo đề nghị của ddarellis này có thể là một vấn đề phiên bản. Có vẻ như có hai lựa chọn.

  • HDF Java 3.3.2, và HDF5-1.8.19 (HDFView Version 2.14)
  • Java HDF Object Package 3.0.0, và HDF5-1.10

Tôi sẽ cố gắng cả hai, nhưng gợi ý từ maven sử dụng HDF Java 2.6.1 là sai.

Bài đăng này hữu ích khi thêm jarhdf5-3.3.2.jar vào các phụ thuộc.

https://forums.netbeans.org/post-62903.html#62903

  1. Trong dự án Maven mở "Add phụ thuộc" hộp thoại
  2. Hãy lên một số groupId, artifactId và phiên bản và điền họ, OK.
  3. Phụ thuộc sẽ được thêm vào tệp pom.xml và sẽ xuất hiện trong nút "Thư viện" của dự án maven
  4. Nhấp chuột phải vào nút Lib và "tạo thủ công cài đặt", điền vào đường dẫn đến Jar jar. Maven repo với tọa độ được nhập ở bước 2).

Ok, vì vậy tôi đã cài đặt HDF5 1.8.19 HDFView2.14 và thêm jarhdf5-3.3.2 vào phụ thuộc. Tuy nhiên tôi nhận được lỗi này khi tôi cố gắng chạy:

Caused by: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 
at hdf.hdf5lib.H5.<clinit>(H5.java:230) 
+0

Nhấp chuột phải vào dự án và chọn "Làm sạch và xây dựng" – klonq

Trả lời

5

Tại link bạn tham gia, bạn có thể thấy điều này ở đầu trang:

Change Rất quan trọng: Phiên bản 3.0 (và cao hơn) của các gói JHI5 tất cả các cuộc gọi thư viện HDF là "hdf.hd5flib", lưu ý rằng "ncsa" đã bị xóa . Mã nguồn sử dụng các phiên bản trước của JHI5 nên được thay đổi để phản ánh triển khai mới này.

Điều này có nghĩa là nếu bạn sử dụng phiên bản thư viện thấp hơn từ v3.0 bạn là (v2.6.1), bạn phải bao gồm ncsa .hdf.hdf5lib.H5 ở phía trước tên gói.

Bạn có thể tìm thấy hướng dẫn here.

+0

Tôi không sử dụng phiên bản v2.6.1, đây chỉ là phiên bản mà maven biết. Tôi đã tải xuống phiên bản HDFView mới nhất. (v3.0) sử dụng HDF5 v1.10 – Gelliant

+0

Thêm jarhdf5-3.3.2.jar nhập khẩu là tốt: import hdf.hdf5lib.H5; Bạn có thêm thư viện này vào đường dẫn xây dựng không? Ngoài ra hãy xem xét để loại bỏ sự phụ thuộc từ tệp pom. – ddarellis

5

Các link bạn tham khảo có chứa các ví dụ lỗi thời, bạn nên sử dụng these examples để thay thế.

Như đã chỉ bởi ddarellis, gói đúng là:

ncsa.hdf.hdf5lib 

Dưới đây là một ví dụ làm việc mở một tập tin HDF5:

import ncsa.hdf.hdf5lib.H5; 
import ncsa.hdf.hdf5lib.HDF5Constants; 
import ncsa.hdf.hdf5lib.exceptions.HDF5Exception; 

public class Foo { 

    public void openHdf5File() { 
    int flags = HDF5Constants.H5P_DEFAULT; 
    int access = HDF5Constants.H5F_ACC_RDWR; 

    try { 
     int file_id = H5.H5Fopen("myFile.hdf", flags, access); 
    } catch (HDF5Exception ex) { 
     System.err.println("Failed to open HDF5 file"); 
    } 
    } 

} 

Các phụ thuộc maven bạn có là chính xác và là mới nhất có sẵn trên maven central.

+0

3.2.2 chỉ có sẵn để tải xuống trong trang web của họ sử dụng hdf.hd5flib nhập khẩu này nhưng tôi nghĩ rằng anh ấy hơi bối rối ... – ddarellis

+0

Có, tôi. Có phiên bản 3.3.2 và phiên bản 2.6.1 trên con quạ từ năm 2010. Cảm ơn sự giúp đỡ của bạn, Boris và @ddarellis. – Gelliant

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