【发布时间】:2013-05-08 08:25:47
【问题描述】:
我在自签名 Java 小程序上使用 System.load(),旧版本的 dll 加载正常,但我的新版本(即使 dll 构建良好)不加载,不抛出任何异常,只是将代码停在它的轨道上。
关于可能导致这种情况的任何想法?
这是部署jar文件的html:
<embed id = "IB"
type = "application/x-java-applet"
width = "{$width}"
height = "{$height}"
code = "{$code}"
archive = "{$archive}"
username = "{$username}"
password = "{$password}"
account = "{$customer_ref}"
debug = "{$debug}"
baseweburl = "{$baseweburl}"
webserviceurl = "{$webserviceurl}"
/>
我添加的用于创建 Dll 文件的 C++:
标头(javah 创建)
/*
* Class: i_jni_B
* Method: DeviceOnline
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_i_jni_B_DeviceOnline
(JNIEnv *, jobject);
Cpp 文件
JNIEXPORT jboolean JNICALL Java_i_jni_B_DeviceOnline
(JNIEnv *env, jobject)
{
try
{
CDevice* clsDevice = new CDevice();
clsDevice->Initialize();
clsDevice->Release();
return true;
}
catch (System::Exception^ ex)
{
return false;
}
}
【问题讨论】:
-
小程序是如何部署的?用于加载它的 HTML 是什么?
-
谢谢安德鲁,我编辑了我的问题
-
不要使用嵌入元素!在 W3C 识别的 any 版本的 HTML 中,它不是有效的 HTML。使用deployment toolkit script 部署小程序会更好、更安全、更可靠。那可能会解决问题。试试看,然后回复我。
-
@Andrew 添加部署工具包脚本后,我得到了相同的结果。旧的 dll 文件加载,新的使小程序崩溃。
-
好的。您可以尝试使用 JWS 来部署它,但这只有很小的机会做出任何改变。我对 C++ 了解不够,无法判断该代码中是否有任何可疑之处。
标签: java c++ dll applet signed-applet