SSJS在java类中调用一个方法(在java库中)

vij*_*jay 1 xpages xpages-ssjs

我用java类(Invoke)创建了一个java库(名为:invoke).在设计器导航窗格中的代码下扩展脚本库时可以看到它.

代码是:

package com.kkm.vijay;   

public class Invoke {

    public static void main(String[] args) {

        Runtime r = Runtime.getRuntime();
        Process p = r.exec("C://some.exe");

    }
}
Run Code Online (Sandbox Code Playgroud)

将以下ssjs用于按钮onclick事件,在浏览器中预览时显示Error:500.

importPackage(com.kkmsoft.vijay);
var v=new Invoke();
v.main();
Run Code Online (Sandbox Code Playgroud)

甚至我在类中使用了一个函数,并将ssjs的最后一行更改为v.fn().然而同样的问题.

Sim*_*rty 5

有很多问题,Fredrik提到你应该打开标准的错误页面.

您的第一个代码将无法运行,因为它未正确捕获异常.您还使用main()方法,该方法通常用于执行程序.但你是在没有任何争论的情况下调用它.除非用于执行应用程序,否则请避免使用该方法.

所以改成它:

package com.kkm.vijay;   

import java.io.IOException;

public class Invoke {

    public void mainCode() {

        Runtime r = Runtime.getRuntime();
        try {
            Process p = r.exec("C://WINDOWS//notepad.exe");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

您应该将该代码放在Designer中的新Java视图中.

Java视图的图像

接下来你的按钮代码需要改变.

var v=new com.kkm.vijay.Invoke();
v.mainCode();
Run Code Online (Sandbox Code Playgroud)

测试它应该工作正常.接下来的问题是,因为它是SSJS,应用程序将在服务器上执行.这可能存在安全隐患,可能需要您修改java.policy文件才能执行此操作.

相关的许可将是java.io.FilePermission.