Đã giải quyết: javax.xml.bind không tồn tại

Bắt đầu từ phần giới thiệu, lỗi “javax.xml.bind không tồn tại” là một trong những vấn đề phổ biến nhất mà các nhà phát triển gặp phải khi chuyển đổi từ phiên bản Java cũ sang phiên bản mới hơn, đặc biệt là từ Java 8 sang Java 9 hoặc mới hơn. Trong quá trình chuyển đổi này, bạn có thể gặp thông báo này cho biết rằng một gói nhất định bị thiếu, chủ yếu là do javax.xml.bind không được dùng nữa trong Java 9 và bị xóa khỏi Java 11.

`javax.xml.bind` được sử dụng cho Kiến trúc Java cho liên kết XML (JAXB). Nó được sử dụng để chuyển đổi các đối tượng Java thành XML và ngược lại. Tầm quan trọng của JAXB không thể được phóng đại, vì nó cung cấp các phương thức cho các hoạt động sắp xếp, sắp xếp và xác thực.

Các vấn đề và giải pháp của JDK

Lý do chính cho thông báo lỗi này là với việc phát hành Java SE 9 và hệ thống mô-đun, một số gói đã bị xóa khỏi đường dẫn lớp mặc định, bao gồm `javax.xml.bind`.

Để khắc phục nhanh chóng và tạm thời, bạn có thể sử dụng tùy chọn dòng lệnh `–add-modules` nếu bạn đang chạy chương trình của mình từ dòng lệnh. Đối với Maven và các công cụ xây dựng tương tự khác, bạn có thể thêm trực tiếp các phần phụ thuộc cần thiết vào tệp pom.xml hoặc build.gradle của mình.

<!-- This command tells Java to add the 'java.xml.bind' module to your classpath -->
java --add-modules java.xml.bind YourApp

Tuy nhiên, để có giải pháp lâu dài hơn, đặc biệt nếu bạn dự định di chuyển dự án của mình sang Java 11 trở lên, bạn sẽ phải đưa thư viện JAXB (javax.xml.bind) theo cách thủ công vào đường dẫn lớp của dự án.

Thêm phụ thuộc JAXB, từng bước

Để đưa JAXB vào dự án của bạn, trước tiên bạn cần thêm phần phụ thuộc `jaxb-api` vào pom.xml hoặc build.gradle của mình. Việc triển khai JAXB trong kho lưu trữ được cung cấp bởi `com.sun.xml.bind`.

<!-- In pom.xml, add the following dependencies -->
<dependencies>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.3.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>2.3.0.1</version>
    </dependency>
</dependencies>

Sau khi bao gồm các phụ thuộc này trong dự án của bạn, vấn đề của bạn với “javax.xml.bind không tồn tại” sẽ được giải quyết.

Hiểu tác động của những thay đổi trong Java 9 và hơn thế nữa

Java 9 đã giới thiệu một hệ thống mô-đun mới có tác động đáng kể đến cách các nhà phát triển xây dựng và quản lý ứng dụng của họ. Bằng cách đặt mặc định các gói như `javax.xml.bind` không thể truy cập được, các nhà phát triển buộc phải có ý thức hơn về các phần phụ thuộc trong dự án của họ.

Sự thay đổi này, mặc dù lúc đầu gây khó chịu nhưng cuối cùng lại khuyến khích thực hành tốt trong quản lý phần phụ thuộc, làm cho các dự án trở nên mạnh mẽ hơn và dễ bảo trì hơn về lâu dài.

Điều đó nói lên rằng, những thay đổi này có nghĩa là các nhà phát triển cần phải làm quen với hệ thống mô-đun mới và cách quản lý các phần phụ thuộc một cách rõ ràng hơn. Nhưng với một số thực hành, việc xử lý các vấn đề liên quan đến các mô-đun bị thiếu trong Java 9 trở lên sẽ trở nên dễ quản lý và thậm chí là bản chất thứ hai.

Sự điều chỉnh này đối với hệ thống mô-đun của Java là một minh chứng cho bản chất phát triển của công nghệ và khả năng thích ứng của các nhà phát triển với những thay đổi bằng cách thực hành mới.

bài viết liên quan:

Để lại một bình luận