Внешние jar-файлы недоступны при запуске jar с использованием пользователя без полномочий root в linux - PullRequest
0 голосов
/ 10 мая 2019

У меня есть 1 файл jar, который зависит от внешних файлов jar, я упаковал внешние файлы jar в свой файл jar и успешно могу запустить файл jar в Linux с помощью пользователя root.

У меня есть другой пользователь, у которого есть доступтолько в / user / bin и / proc.

Когда я запускаю jar-файл с помощью этого пользователя, я получаю сообщение об ошибке ниже:

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/text/RandomStringGenerator$Builder        
Caused by: java.lang.ClassNotFoundException: org.apache.commons.text.RandomStringGenerator$Builder
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 9 more

Я не могу предоставить какой-либо другой доступ пользователю.Как решить вышеупомянутое исключение с таким же доступом.пользователь с ограниченными правами является владельцем jar и имеет полное разрешение для всей папки.

Я предоставляю jre в комплекте с jar и выполняю jar только с использованием этого jre.

sh файл дляЗапустите jare, как показано ниже:

#unzip jre if not exists
if [ ! -d "$PWD/jre" ]
then
   unzip jre_64.zip
fi

#export java path
export PATH=$PWD/jre/bin:$PATH

#make all files executable
chmod 755 jre/bin/*

#run jar file
java  -jar jarName.jar

Я не получил никакой ошибки при запуске sh file, Мой основной класс также выполнен (я подтвердил это, добавив журналы), но он не смог загрузить внешние jar.

...