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

时间:2013-06-05 05:55:24

标签: 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");

    }
}

在浏览器中预览时,将以下 ssjs 用于按钮 onclick 事件错误:500

importPackage(com.kkmsoft.vijay);
var v=new Invoke();
v.main();

即使我在课堂上使用了一个函数,也将ssjs的最后一行改为 v.fn()。然而同样的问题。

1 个答案:

答案 0 :(得分: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();
        }

    }
}

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

Java view of image

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

var v=new com.kkm.vijay.Invoke();
v.mainCode();

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

相关权限为java.io.FilePermission