0

我正在使用 javanet 将 ac# 或 .NET dll 加载到 java 中,它在作为控制台应用程序运行时完美运行,但不适用于 Web 应用程序。

它甚至适用于 Web 应用程序吗?

4

1 回答 1

0

我刚刚为您创建了示例 Tomcat v9.0 项目,因此您可以将其用作参考。你可以在这里找到它: https ://github.com/Javonet/tutorials/tree/master/JavonetTomcatWebApp

该示例包含两个 Eclipse 项目:

  • TomcatMiddleApp编译为 JAR(常规 Java 包,它定义了一个使用 Javanet 使用 .NET Random 类生成随机数的类)
  • TomcatJavonetTest web 项目(常规的 web 项目,添加了 Javonet 和 TomcatMiddleApp 作为引用并定义了一个显示随机数的 *.jsp)

我在 Eclipse 中的设置如下所示: 在此处输入图像描述

如您所见,我只是将 Javonet 和 TomcatMiddleApp 复制到“WEB-INF/lib”文件夹。

我的 TestJavonet.java 文件的内容是:

    package TomcatMiddleApp;


import com.javonet.Javonet;
import com.javonet.JavonetException;
import com.javonet.JavonetFramework;
import com.javonet.api.NObject;


public class TestJavonet {
    public static final String TMP_DIR = System.getProperty("java.io.tmpdir");
    public String CallDotNetRandom()
    {
        try {
            System.out.println("Setting temporary directory for Javonet lic file to: "+TMP_DIR);
            //Notice I set here temp dir for Javonet lic file by default it will try to save in system32 and will fail
            Javonet.setLicenseDirectory(TMP_DIR);
            Javonet.activate("******", "******",JavonetFramework.v45);
            NObject objRandom = com.javonet.Javonet.New("System.Random");
            Integer value = objRandom.invoke("Next",10,20);
            return value.toString();

        } catch (JavonetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return e.getMessage();
        }
    }
}

我的 main.jps 文件是:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
TomcatMiddleApp.TestJavonet middleApp = new TomcatMiddleApp.TestJavonet();
%>
    <%= "Hello Javonet! Random number generated on .NET side:"+middleApp.CallDotNetRandom() %>
</body>
</html>

其他文件没什么特别的。您不需要使用单独的 JAR 来定义您的逻辑,您可以直接将类放在 Tomcat Web 项目中。

您可以在 Java Web 项目中轻松使用 .NET 库。

于 2018-02-06T12:48:08.367 回答