.Jar файл в JS - PullRequest
       26

.Jar файл в JS

2 голосов
/ 06 мая 2011

знает, как получить доступ к файлу .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)

*/

Ответы [ 4 ]

3 голосов
/ 06 мая 2011

Извините, но в настоящее время такая функциональность не разработана, поэтому вы не можете получить доступ к jar-файлу в javascript.

Что вы можете сделать, это запустить AJAX-запрос в javascript и в сервлете, использовать этот jar для обработки и возврата желаемого результата, и этот результат будет доступен в javascript.


Редактировать

В сервлете:

File file = new File("/folderName");
File[] files;
if(file.isDirectory()){
    files = file.listFiles();
    for(File fl : files){
        out.print(fl.getName()+",");
}

В JavaScript:

var xmlhttp;
if (window.XMLHttpRequest) {
    xmlhttp = new XMLHttpRequest();
} else {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST", urlToServlet, false);
xmlhttp.send(null);

Теперь в js в xmlhttp.responseText вы получите список файлов в папке. Вы можете разобрать его и отобразить список в соответствии с вашими потребностями.

2 голосов
/ 06 мая 2011

Я думаю, вам нужно взглянуть на LiveConnect, который позволяет Javascript вызывать Java и наоборот в веб-браузере.

Ссылки:


Позволит ли это вам делать то, что вы хотите (получить доступ к файловой системе на компьютере пользователя), это другой вопрос.Это будет зависеть от того, распространяется ли Java как подписанный JAR ... и пользователь / браузер принимает подпись.Если JAR не подписан, то код Java будет обрабатываться как недоверенный код и выполняться в изолированной программной среде, которая (по умолчанию) препятствует доступу к локальной файловой системе.

2 голосов
/ 06 мая 2011

Создайте доверенный апплет для использования существующих Jar-файлов.JavaScript может взаимодействовать с (получать данные / отправлять данные) Java-апплетам.

0 голосов
/ 06 мая 2011

Если вы добавляете апплет на свою страницу, вам не нужно иметь какой-либо аспект пользовательского интерфейса, вы можете получить апплет через DOM.Если у вас есть такая возможность, вы можете вызывать методы для нее, поэтому поместите свой API в класс апплета, предоставляющий средство получения объекта, который обеспечивает требуемую функциональность, и вызовите его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...