LiveConnect 无法初始化 firefox 扩展 java.lang.reflect.InvocationTar
LiveConnect unable to initialise certain classes in firefox extension java.lang.reflect.InvocationTargetException
我按照本指南 https://developer.mozilla.org/en/Java_in_Firefox_Extensions 使我能够在Firefox插件中访问java类(我实际上是将它们添加到Selenium ide的用户扩展中)。
上面的指南一切正常,直到我的 java 代码尝试初始化导入的对象......
因此,如果我导入jtidy来尝试清理html,一旦初始化它,我就会得到java.lang.reflect.InvocationTargetException异常。 有趣的是,我可以在 javascript 中初始化 jtidy 类,然后将其传递,它一直有效,直到我尝试解析 dom。 我认为这一切都与权限有关,但我对Live Connect的工作还不够,不知道从这里开始。
我的代码如下:
爪哇语
PageBot.prototype.locateElementByLabelText = function(labelText, inDocument) {
//var pageTitle = inDocument.getElementsByTagName('title').item(0).nodeName;
var pageTitle = inDocument.title;
LOG.warn("Title = "+ pageTitle);
var pageSource = inDocument.getElementsByTagName('html')[0].innerHTML;
LOG.warn("I have the page source");
var xpathValue = getXpathUsingJavaFnc(labelText, pageTitle, pageSource);
LOG.warn("Xpath = "+xpathValue);
return this.locateElementByXPath(xpathValue, inDocument);
};
Selenium.prototype.doLoadProject = function(locator, paramString) {
LOG.warn("starting to load Load Project "+locator + " " + paramString);
try{
var result = inst.initialiseProject(locator, Components.classes["@mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment).get('AUTOMATED_HOME')+"/");
}catch(e){
LOG.warn(e.message);
}
LOG.warn("finished Load Project");
LOG.warn(result);
};
var basePath = Components.classes["@mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment).get('AUTOMATED_HOME');
var fullPath = 'file:///' + basePath + '/ScenarioFramework-jar-with-dependencies.jar';
LOG.warn("full path = "+fullPath);
var extensionUrl = "file:///" + basePath +'/javaFirefoxExtensionUtils.jar';
var classLoaderJarpath = extensionUrl;
var myJarpath = fullPath;
//var testTidy = "file:///" + basePath +'/jtidy-r938.jar';
var urlArray = [];
urlArray[0] = new java.net.URL(myJarpath);
urlArray[1] = new java.net.URL(classLoaderJarpath);
urlArray[2] = new java.net.URL(testTidy);
var cl = java.net.URLClassLoader.newInstance(urlArray);
policyAdd(cl, urlArray);
var classToLoad = "scenario.framework.main.SeleniumRunner";
var aClass = cl.loadClass(classToLoad);
//var aClass = java.lang.Class.forName(classToLoad, true, cl);
var inst = aClass.newInstance();
LOG.warn("finished loading add Java");
function getXpathUsingJavaFnc(eleName, pageTitle, pageSource) {
LOG.warn("Testing getXpath");
try{
var xpathValue = inst.findElementUsingName(eleName, pageTitle, pageSource);
}catch(e){
//var jvm = Components.classes["@mozilla.org/oji/jvm-mgr;1"].getService(Components.interfaces.nsIJVMManager);
//jvm.showJavaConsole();
logExc(e);
}
return xpathValue;
};
function policyAdd (loader, urls) {
try {
var str = 'edu.mit.simile.javaFirefoxExtensionUtils.URLSetPolicy';
var policyClass = java.lang.Class.forName(
str,
true,
loader
);
var policy = policyClass.newInstance();
policy.setOuterPolicy(java.security.Policy.getPolicy());
java.security.Policy.setPolicy(policy);
policy.addPermission(new java.security.AllPermission());
for (var j=0; j < urls.length; j++) {
policy.addURL(urls[j]);
}
java.lang.System.setSecurityManager(null);
var t = java.lang.Thread.currentThread().setContextClassLoader(cl);
}catch(e) {
logExc(e);
}
}
function logExc(e) {
try {
while(e != null) {
LOG.warn(e);
e = e.getCause();
}
LOG.warn(netscape.javascript.JSUtil.getStackTrace(e));
} catch(exp) {
LOG.warn("exception while logging exception");
LOG.warn(exp);
LOG.warn("exception being logged");
LOG.warn(e);
}
}
爪哇岛:
public static String findElementUsingName(String Name, String pageTitle, String html){
org.w3c.tidy.Tidy tidy = new org.w3c.tidy.Tidy();
return "//input[@id='password']";
}
每次编译后重新启动 Firefox
相关文章:
- javascript error"java.lang.NullPointerException" i
- JSONSTORE Mobilefirst 7.1 error java.lang.NoClassDefFoundErr
- java.lang.NullPointerException servlet
- 为什么 Servlet.service() for servlet jsp 抛出了异常 java.lang.NullPo
- java.io.IOException: write beyond end of stream OR java.lang
- LiveConnect 无法初始化 firefox 扩展 java.lang.reflect.InvocationTar
- Running Java from Nashron JavaScript - Exception java.lang.C
- ClassCastException - JavaScriptObject 不能强制转换为 java.lang.Stri
- 使用Java.lang.reflect.array.newInstance创建一个带有Java反射的二维数组
- 谷歌图表:java.lang.NoClassDefFoundError:com/Google/gwt/core/clie
- java.lang.RuntimeException:无法生成DH密钥对
- java.lang.NoSuchFieldError: reportUnusedDeclaredThrownExcept
- 我的应用程序崩溃,出现java.lang.IollegalArgumentException
- JavaScript使用java.lang.Runtime.getRuntime()运行DOS命令
- java.lang.Double.longBitsToDouble function in JavaScript
- JavaScript analog of java.lang.Optional?
- 在JavaScript中创建输入隐藏类型元素数组,并在Servlet中获取值,但java.lang.NullPointe
- 无法将Nan转换为Java.lang.long
- Rhino conversion java.lang.String to JavaScript String
- PayPal - Javascript - REST - Error: java.lang.NullPointerExc