Xpages SSJS调用java类中的方法(在java库中)

Xpages SSJS调用java类中的方法(在java库中),xpages,xpages-ssjs,Xpages,Xpages Ssjs,我创建了一个名为:invoke的java库,其中包含一个java类invoke。在designer导航窗格中的“代码”下展开脚本库时,可以看到此选项 代码是: package com.kkm.vijay; public class Invoke { public static void main(String[] args) { Runtime r = Runtime.getRuntime(); Process p = r.exec("C://

我创建了一个名为:invoke的java库,其中包含一个java类invoke。在designer导航窗格中的“代码”下展开脚本库时,可以看到此选项

代码是:

package com.kkm.vijay;   

public class Invoke {

    public static void main(String[] args) {

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

    }
}
使用以下SSJ对按钮的onclick事件显示错误:在浏览器中预览时为500

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

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

有很多地方出错,正如弗雷德里克提到的,你应该打开标准错误页面

您的第一个代码将无法运行,因为它没有正确捕获异常。您还使用了一个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视图中

接下来,您的按钮代码需要更改

var v=new com.kkm.vijay.Invoke();
v.mainCode();
测试表明它应该可以正常工作。接下来的问题是,应用程序将在服务器上执行SSJS。这可能涉及到安全问题,因此可能需要修改java.policy文件


相关权限将是java.io.FilePermission

有很多错误,正如弗雷德里克提到的,你应该打开标准错误页面

您的第一个代码将无法运行,因为它没有正确捕获异常。您还使用了一个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视图中

接下来,您的按钮代码需要更改

var v=new com.kkm.vijay.Invoke();
v.mainCode();
测试表明它应该可以正常工作。接下来的问题是,应用程序将在服务器上执行SSJS。这可能涉及到安全问题,因此可能需要修改java.policy文件


相关权限将是java.io.FilePermission

在数据库中启用XPage标准错误页以查看真正的错误。在数据库中启用XPage标准错误页以查看真正的错误。它现在起作用了。但是,如果我对java类使用默认包呢?ssjs代码是如何变化的?还有,如何以同样的方式使用jar filein系统文件夹?您应该避免使用Java类的默认包进行糟糕的编程。lib/ext文件夹中的jar应该以相同的方式访问。有关NSF内部的信息,请参见以下内容。正如西蒙所说。。永远不要使用默认包。包名用于组织代码。包名称为代码提供了上下文和某种意义。如果将“file”对象放在默认包中,则不清楚此类的用途、使用时间和编写者/地点。如果你把它放在一个包中,比如说你的.application.util。另一个开发人员知道它是为您的应用程序定制的,它以某种方式被用作一个util类,它是一个文件。当您以后需要该类时,您知道它最初是为应用程序x创建的。它现在起作用了。但是,如果我对java类使用默认包呢?ssjs代码是如何变化的?还有,如何以同样的方式使用jar filein系统文件夹?您应该避免使用Java类的默认包进行糟糕的编程。lib/ext文件夹中的jar应该以相同的方式访问。有关NSF内部的信息,请参见以下内容。正如西蒙所说。。永远不要使用默认包。包名用于组织代码。包名称为代码提供了上下文和某种意义。如果将“file”对象放在默认包中,则不清楚此类的用途、使用时间和编写者/地点。如果你把它放在一个包中,比如说你的.application.util。另一个开发人员知道它是为您的应用程序定制的,它以某种方式被用作一个util类,它是一个文件。当您以后需要该类时,您知道它最初是为应用程序x创建的。