ОШИБКА JAVA: пакет com.sun.rowset не виден: com.sun.rowset объявлен в модуле java.sql.rowset, который не экспортирует его
Я просто пытаюсь запустить этот код:
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, и это все еще не помогает.
3 ответа
С 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.
Как объяснено в разделе Существуют ли какие-либо хорошие реализации CachedRowSet, кроме Sun?, то
RowSetProvider
стандартный способ получить
CachedRowSet
.
Пакеты от
sun
являются внутренними и могут изменяться . Они никогда не должны использоваться разработчиками JDK.