簡體   English   中英

JAVA 錯誤:包 com.sun.rowset 不可見:com.sun.rowset 在模塊 java.sql.rowset 中聲明,但不導出它

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM