Я вызываю Java-апплет из Javascript. Код Java должен запускаться в привилегированном режиме (в конце концов он отобразит файл выбора, который будет отображать файлы с локального жесткого диска). Вызов Javascript возвращает java.lang.reflect.InvocationTargetException
. Любые идеи о том, как я могу заставить этот код работать, или любые методы отладки, чтобы получить больше информации о том, почему он терпит неудачу, будут очень признательны.Запуск Priviliged Code в Java Applet
Вот класс Java. Я удалил весь ненужный код, чтобы попытаться выявить настоящую проблему.
// Java code
public class OHLib extends Applet {
public String getFile() {
String result;
try {
// this code does NOT generate an exception
result = (String) AccessController.doPrivileged(new PrivilegedAction() {
public String run() {
// JFileChooser code will go here
return "xxx";
}
});
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
Я не получаю информацию об исключении из вышеуказанного блока try/catch.
Приведенный выше код вызывается JavaScript следующим образом:
// JavaScript code
function BrowseForFile() {
var x;
try {
// this code generates InvocationTargetException
x = ohApplet.getFile();
} catch (e) {
console.log(e);
}
}
Приведенный выше код, где я получаю InvocationTargetException
.
Апплет развернут на моей веб-страницы следующим образом:
<script src="/plugins/deployJava.js"></script>
<script>
var attributes = {
id:'ohApplet',
code:'OHLib',
codebase: 'java',
archive: 'OHLib.jar',
width:1,
height:1,
} ;
var parameters = {
jnlp_href: 'OHLib.jnlp',
classloader_cache: 'false',
} ;
deployJava.runApplet(attributes, parameters, '1.6');
Апплет в подписанном файле фляги, со следующими манифеста:
Application-Name: <appname>
Permissions: all-permissions
Codebase: <domain>.dev <domain>.com
Caller-Allowable-Codebase: <domain>.dev <domain>.com
Application-Library-Allowable-Codebase: <domain>.dev <domain>.com
Файл JNLP выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="">
<information>
<title>...</title>
<vendor>...</vendor>
</information>
<security>
<all-permissions />
</security>
<resources>
<j2se version="1.8+" href="http://java.sun.com/products/autodl/j2se" />
<jar href="OHLib.jar" main="true" />
</resources>
<applet-desc
main-class="OHLib"
name="OHLib"
width="1"
height="1">
</applet-desc>
</jnlp>
Любые идеи о том, как я могу заставить этот код работать, или любые методы отладки, чтобы получить больше информации Было бы очень благодарно за то, почему он терпит неудачу.