![](/img/trans.png)
[英]Why NoClassDefFoundError for com/sun/rowset/CachedRowSetImpl in Wildfly?
[英]JAVA ERROR : package com.sun.rowset is not visible : com.sun.rowset is declared in module java.sql.rowset, which does not export it
我只是嘗試運行此代碼:
import com.sun.rowset.CachedRowSetImpl;
public class Test {
public static void main(String[] args) throws Exception{
CachedRowSetImpl crs = new CachedRowSetImpl();
}
}
當我運行它時,我得到:
錯誤:(1, 15) java: 包 com.sun.rowset 不可見(包 com.sun.rowset 在模塊 java.sql.rowset 中聲明,不導出它)
我正在使用 IntelliJ 並嘗試導入 rs2xml.jar,但這仍然沒有幫助。
使用Java 9
您將無法再訪問此類。 在理想的情況下,您不應該這樣做。 這是因為該類的包未在模塊javax.sql.rowset
導出。 在Java-9
這樣做的正確方法是:
import javax.sql.rowset.*;
public class Test {
public static void main(String[] args) throws Exception {
CachedRowSet crs = RowSetProvider.newFactory().createCachedRowSet();
}
}
要了解我們可以轉到模塊描述 ( module-info.java
) 並找到導出包的列表:
exports javax.sql.rowset;
exports javax.sql.rowset.serial;
exports javax.sql.rowset.spi;
這應該與 Java 10 一起使用
代替
CachedRowSet crs = new CachedRowSetImpl();
用
CachedRowSet crs = RowSetProvider.newFactory().createCachedRowSet();
除了這里的答案,你不應該使用的是要注意重要com.sun.rowset.CachedRowSetImpl
,即便在Java中8。
正如在除了 Sun 之外,還有其他好的 CachedRowSet 實現嗎? , RowSetProvider
是獲取CachedRowSet
的標准方法。
來自sun
包裹是 內部的,可能會發生變化。 除非 JDK 開發人員,否則永遠不應使用它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.