我正在使用 javanet 将 ac# 或 .NET dll 加载到 java 中,它在作为控制台应用程序运行时完美运行,但不适用于 Web 应用程序。
它甚至适用于 Web 应用程序吗?
我刚刚为您创建了示例 Tomcat v9.0 项目,因此您可以将其用作参考。你可以在这里找到它: https ://github.com/Javonet/tutorials/tree/master/JavonetTomcatWebApp
该示例包含两个 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 库。