powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
16 сообщений из 16, страница 1 из 1
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563212
Фотография BlackGnomeГуест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть код:

Код: java
1.
2.
3.
4.
5.
6.
7.
import java.net.URLClassLoader;

...

ClassLoader classLoader =  this.getClass().getClassLoader();
		
	    Class aClass = classLoader.loadClass(fullClassName);	



На на восьмёрке всё работает.

На девятой яве:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
java.lang.SecurityException: Prohibited package name: java.sql
	at java.base/java.lang.ClassLoader.preDefineClass(ClassLoader.java:889)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1005)
	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
	at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:545)
	at java.base/java.net.URLClassLoader.access$100(URLClassLoader.java:83)
	at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:453)
	at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:447)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:446)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
	at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3110)
	at java.base/java.lang.Class.getConstructor0(Class.java:3315)
	at java.base/java.lang.Class.newInstance(Class.java:530)


Но я сам не создавал никаких пакетов с началом имени [java.sql]. Я использую импорты типовых пакетов и
подгружаю еще дрвайвер для MySQL

Код под Java9 никак особо не оптимизировал. В отладке всё пашет. Проблемы начинаются в свободном полёте...

Я сам использую конструкцию import java.sql + коннектор к базе. Как заставить заработать загрузчик классов?
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563218
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю что драйвер не совместим с Java 9 и в нем есть такой пакет. Какая версия коннектора?
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563291
Фотография BlackGnomeГуест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПодозреваю что драйвер не совместим с Java 9 и в нем есть такой пакет. Какая версия коннектора?

Просидел всю ночь, потом поменял флажок









ПОЧЕМУ ОНО ТАК ?
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563292
Фотография BlackGnomeГуест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot BlackGnomeГуест]

Поясню. Жарик потом берет классы сам из себя. Ну такой у меня дизайн ;) Ну вопрос в том, что изменилось?
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563354
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackGnomeГуестПоясню. Жарик потом берет классы сам из себя.1. Зачем для этого собственный загрузчик классов???
2. На скриншоте видно, с какой опцией заработало, но непонятно, что было выбрано до этого.
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563367
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov1. Зачем для этого собственный загрузчик классов???
2. На скриншоте видно, с какой опцией заработало, но непонятно, что было выбрано до этого.
До этого всё в один jar пакавалось, что и приводило к нарушению подписанных\запечатанных jar.
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563369
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczподписанных\запечатанных jar.
пакетов
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563403
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczДо этого всё в один jar пакавалось, что и приводило к нарушению подписанных\запечатанных jar.Подписанных - да, запечатанных - с чего бы? Классы запечатанных пакетов как были в одном пакете, так в нём и остались. Перепаковка в общий jar это скорее способ "перезапечатать" - классы одного пакета были в разных jar, а стали - в одном. sealed == true
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563415
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovПодписанных - да, запечатанных - с чего бы?
Вероятно, потому что пакеты запечатываются через подпись jar файла?
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563428
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczВероятно, потому что пакеты запечатываются через подпись jar файла?Точно? А не через пару Name/Sealed?
тупой тест
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
package test;
public class Test {
  public static void main(String[] args) {
    UseLess.say("Say: " + (args.length == 0 ? "" : args[0]) + "." );
  }
}
class UseLess {
  static void say(String msg) { System.out.println(msg); }
}

Создаём иерархию (bin/, lib/test/, src/), компилируем пример, делаем "move bin\test\useless.class lib\test" и проверяем, что "java -cp bin;lib test.Test" работает ожидаемым образом.
Формируем jar с единственным классом и манифестом:
Код: plaintext
1.
2.
 Manifest-Version: 1.0
 Name: test/
 Sealed: true
Проверяем, что не работает:
java -cp test.jar;lib test.Test
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Exception in thread "main" java.lang.SecurityException: sealing violation: package test is sealed
	at java.net.URLClassLoader.getAndVerifyPackage(Unknown Source)
	at java.net.URLClassLoader.definePackageInternal(Unknown Source)
	at java.net.URLClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.access$100(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at test.Test.main(test.java:4)
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563441
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Так эта. Какой смысл в это sealed без подписи-то?
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563445
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczТак эта. Какой смысл в это sealed без подписи-то?Если человек в состоянии пересобрать jar, то он и переподписание осилит. А если не осилил - какая разница, что его остановит?
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563447
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЕсли человек в состоянии пересобрать jar, то он и переподписание осилит. А если не осилил - какая разница, что его остановит?
Ну, так то если для себя. Но подписывают не для этого же. Хотя ладно.
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563449
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНу, так то если для себя. Но подписывают не для этого же.А для чего?
JVM, как я понимаю, требует подписей во вполне конкретных сценариях.
В остальных случаях, если "некто" озадачился использованием непубличного API пакета, то этот некто вполне может просто удалить подписи - на возможность работы это никак не повлияет.
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563451
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovА для чего?
Для распространения же. Вот драйвер MySQL, например, подписан и если его кто где запускает, то может убедится что это драйвера, а не фигня на постном масле. А вот jar от Васи Пупкина, как минимум, при запуске должен выдавать предупреждение, мол, не знаем мы вашего Васю, подумайте прежде чем запускать.

Хотя в реальности, оно, конечно, всё через задницу устроено. Слишком много условностей.
...
Рейтинг: 0 / 0
Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
    #39563463
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczможет убедится что это драйвера, а не фигня на постном масле.Таких гарантий ЭП не даёт
Убедиться, что архив создан владельцем подписи - это да, а вот со всем остальным проблемы.А вот jar от Васи Пупкина, как минимум, при запуске должен выдавать предупреждениеЕсть разные варианты установления доверительных отношений. PKI - не единственный и даже не лучший.

P.S. Лично мне сильно не хватает троичной логики для удостоверяющих центров - не знаю/знаю/доверяю.
Как-то стрёмно доверять всем миллионам клиентов какого-нибудь крупного УЦ ...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Java 9, java.lang.SecurityException: Prohibited package name: java.sql А как теперь быть?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]