我有一个与我签署 jar 文件时添加的清单文件有关的问题。
我有一系列应用程序供应商提供的 jarfile。我们为实际功能(如按钮、屏幕等)编写了一些类。jar 文件可在服务器上访问,例如以下...
http://<myservername>/<folderame>/myjar.jar
在这个文件夹的根目录中是一系列与我的类对应的文件夹(例如 .com.company.app.mylist.list 将对应于 /com/company/app/mylist/list.class)
文件在那里,多年来一切都运行良好。去年,当 Java 在使用未签名代码时非常烦人时排队(我使用的七个 jar 文件中的三个没有签名)。我已经能够使用来自我的域 CA 的代码签名证书成功地对它们进行签名。
因此,作为签名过程的一部分,我编写了一个脚本,使用jar umf命令将更改导入清单文件。这会将以下三行导入到我的清单文件中......
Permissions: all-permissions
Trusted-Library: true
Codebase: http://<servername>/<foldername>/
当我添加这三行时,我能够在没有任何安全问题或提示的情况下启动应用程序。但是,在应用程序启动并登录后,需要额外的课程才能看到我正在寻找的屏幕。那是我在 java 控制台中看到以下错误消息的时候......我在屏幕上看不到任何东西
java.lang.ClassNotFoundException: com.<company>.<app>.inhouse.ispecs.FIRUPIspecModel
我可以验证它提到的文件夹中存在FIRUPIspecModel类。正如我所说,如果我将原始 .jar 文件保留在原处,一切正常(只是有一堆烦人的安全提示会阻止文件在下一个 Java 版本中运行)
现在,奇怪的是,如果我删除第三行(代码库),我可以登录并调用作为 .class 存在的屏幕,该屏幕位于根目录下方。但是,我确实在我的 Java 版本(7r40)上收到了一个安全错误,说它包含签名/未签名的代码。此提示无法绕过,Java 表示将不允许在 Java 的未来版本中运行。
所以,我的问题。我不明白为什么当我在清单文件中定义了代码库参数时,它实际上是这样,所以我不能调用代码。代码在那里,它在我在代码库中定义的目录下。所以,它应该被信任。
有什么见解吗?