我正在使用 Websphere MQ。我需要将特定的 JAR 文件转换为 DLL。 Here是来自 WMQ 客户端的 JAR 集合。 Here是列出各种传入和传出依赖项的集合的 JAR 分析器文件。
我要转换的文件是 com.ibm.mq.jar
,它具有以下传出依赖项 -
com.ibm.mq.commonservice.jar
com.ibm.mq.headers.jar
com.ibm.mq.jmqi.jar
问题是我不知道在命令提示符中传递什么命令来转换 jar 而不丢失任何类。
基本上,我需要访问 MQMessage 和 MQMD,它们是 com.ibm.mq.jar
的一部分,但是当我自行转换它时,这些特定的类不会被导入。
我看了一下another similar StackOverflow Question但主要区别在于依赖关系是循环的。
例如,com.ibm.mq.headers.jar
依赖于 com.ibm.mq.jmqi.jar
,反之亦然。
最佳答案
我不知道为什么您不阅读我提供的 MQ 链接。
(1) 创建纯“.NET 托管”MQ 应用程序
int openOptions = MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING;
Hashtable qMgrProp = new Hashtable();
qMgrProp.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED); /* very important */
qMgrProp.Add(MQC.HOST_NAME_PROPERTY, "10.10.10.10");
qMgrProp.Add(MQC.CHANNEL_PROPERTY, "TEST.CHL");
qMgrProp.Add(MQC.PORT_PROPERTY, 1414);
qMgrProp.Add(MQC.USER_ID_PROPERTY, "myUserID");
try
{
MQQueueManager _qMgr = new MQQueueManager("MQA1", qMgrProp);
MQQueue queue = _qMgr.AccessQueue("TEST.Q", openOptions, null, null, null);
/* Do whatever you want to do */
queue.Close();
_qMgr.Disconnect();
}
catch (MQException mqex)
{
System.Console.Out.WriteLine("MQTest01 cc=" + mqex.CompletionCode + " : rc=" + mqex.ReasonCode);
}
(2)编译。
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe /nologo /t:exe /r:System.dll /r:"C:\Program Files (x86)\IBM\WebSphere MQ\bin\amqmdnet.dll" /out:bin\Release\Test.exe Test.cs Properties\AssemblyInfo.cs
(3) 创建存储 Test.exe 的“Test.config”文件(与 Test.exe 一起使用)
<configuration>
<appSettings>
<add key="NMQ_MQ_LIB" value="managed"/>
</appSettings>
</configuration>
(4) 将 3 个文件复制到目标 PC:Test.exe、Test.config 和 amqmdnet.dll,然后运行。您可能需要更新 PATH 环境变量以指向 amqmdnet.dll 所在的目录。这通常是不需要的,但有时 Windows 会变得挑剔。
关于java - 当 jar 文件具有各种传出依赖项时,如何使用 IKVMC 将特定 JAR 文件转换为 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25988538/