首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JAVA错误:包com.sun.rowset不可见:在模块java.sql.rowset中声明了com.sun.rowset,该模块不会将其导出

JAVA错误:包com.sun.rowset不可见:在模块java.sql.rowset中声明了com.sun.rowset,该模块不会将其导出
EN

Stack Overflow用户
提问于 2018-01-07 00:41:17
回答 3查看 5.8K关注 0票数 7

我只是试着运行下面的代码:

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,但这仍然没有帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-07 01:20:48

使用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;
票数 13
EN

Stack Overflow用户

发布于 2018-08-17 02:27:03

这应该与Java 10一起使用

而不是

CachedRowSet crs = new CachedRowSetImpl();

使用

CachedRowSet crs = RowSetProvider.newFactory().createCachedRowSet();
票数 2
EN

Stack Overflow用户

发布于 2021-04-05 02:39:31

除了这里的答案之外,重要的是要注意,即使在Java8中,也不应该使用com.sun.rowset.CachedRowSetImpl

正如在Are there any good CachedRowSet implementations other than the Sun one?中所解释的,RowSetProvider是获得CachedRowSet的标准方法。

来自sun的包是internal and subject to change。除非由JDK开发人员使用,否则不应该使用它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48129475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档