знает, как получить доступ к файлу .jar в JS.Я создал класс на Java и импортировал его в виде файла jar, и я хочу получить доступ к этому классу из файла JS.
"Привет, ребята, я благодарен всем вам. Я попытался перечислить файлы из папки с помощью JSв Firefox XUL, но я не смог тогда, я решил сделать это с JAVA в JS. Я был бы рад, если бы нашел один пример с JS или Java в JS, чтобы вывести список папок. ".
karthik
Один из моих преподавателей сделал это, и вот код, но я не мог понять!Я уверен, что он вызвал файлы jar из той же папки проекта, где точно находятся все файлы JS и XUL.
// This function will be called to give the necessary privileges to your JAR files
function policyAdd (loader, urls) {
//alert("debut charge java");
try {
//If have trouble with the policy try changing it to
//edu.mit.simile.javaFirefoxExtensionUtils.URLSetPolicy
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]);
}
}catch(e) {
alert(e+'::'+e.lineNumber);
}
}
//Get extension folder installation path...
var extensionPath = Components.classes["@mozilla.org/extensions/manager;1"].
getService(Components.interfaces.nsIExtensionManager).
getInstallLocation("pde@ghorbel.com"). // guid of extension
getItemLocation("pde@ghorbel.com");
// Get path to the JAR files (the following assumes your JARs are within a
// directory called "java" at the root of your extension's folder hierarchy)
// You must add this utilities (classloader) JAR to give your extension full privileges
var classLoaderJarpath = "file:///" + extensionPath.path.replace(/\\/g,"/") + "/java/javaFirefoxExtensionUtils.jar";
// Add the paths for all the other JAR files that you will be using
var myJarpath = "file:///" + extensionPath.path.replace(/\\/g,"/") +
"/java/encryption.jar"; // seems you don't actually have to replace the backslashes as they work as well
var urlArray = []; // Build a regular JavaScript array (LiveConnect will auto-convert to a Java array)
urlArray[0] = new java.net.URL(myJarpath);
urlArray[1] = new java.net.URL(classLoaderJarpath);
var cl = java.net.URLClassLoader.newInstance(urlArray);
//Set security policies using the above policyAdd() function
policyAdd(cl, urlArray);
/*
//loading Encryption Class
var myClass = cl.loadClass('Encryption'); // use the same loader from above
var encryptionObj = myClass.newInstance();
//var res = encryptionObj.encrypt("test message to crypt"); // Pass whatever arguments you need (they'll be auto-converted to Java form, taking into account the LiveConnect conversion rules)
*/