java jre 7u45 破坏了 classloader.getResources()?

2024-01-30

我有代码迭代 classLoader.getResources("META-INF/MANIFEST.MF") 的结果以返回类路径上的 jar 列表。从 1.6.0_18 一直到 1.7.0_40,这都工作得很好。现在 1.7.0_45 通过显示有关混合签名/未签名代码的安全警告弹出窗口打破了这一点。

用于演示问题的小型独立测试用例:

package testcase;
import java.io.*;
import java.net.*;
import java.util.Enumeration;
import java.util.logging.*;
public class TestCase {
    public static void main(String[] args) {
        getAllJarUrls();
    }

    public static void getAllJarUrls() {
        try {
            final Enumeration<URL> mfUrls = Thread.currentThread().getContextClassLoader().getResources("META-INF/MANIFEST.MF");
            while (mfUrls.hasMoreElements()) {
                URL jarUrl = mfUrls.nextElement();
                if (!jarUrl.getProtocol().equals("jar")) {
                    continue;
                }
                try {
                    System.out.println(jarUrl.toURI());
                } catch (URISyntaxException ex) {
                    Logger.getLogger("testcase").log(Level.SEVERE, null, ex);
                }
            }
        } catch (IOException e) {
            Logger.getLogger("testcase").log(Level.SEVERE, null, e);
        }
    }
}

使用 jnlp(使用有效证书签名的 jar)启动它:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://localhost/test" href="test.jnlp">
    <information>
        <title>test</title>
        <vendor>test</vendor>
      </information>
    <security><all-permissions/></security>
    <resources>
        <jar href="testcase.jar" main="true" download="eager"/>
    </resources>
    <application-desc main-class="testcase.TestCase"/>
</jnlp>

运行时,让控制台可见,然后点击“5”以获得详细输出。然后单击安全提示上的“阻止”以查看异常。点击允许就会让代码正常运行,但这不是可接受的用户体验。特别是因为我们的应用程序必须能够在没有用户输入的情况下启动。

1.7.0_45下输出如下:

CacheEntry[http://localhost/test/testcase.jar]: updateAvailable=true,lastModified=Tue Oct 15 21:09:21 CDT 2013,length=6314
jar:file:/C:/jre32/1.7.0_45/lib/javaws.jar!/META-INF/MANIFEST.MF
jar:file:/C:/jre32/1.7.0_45/lib/deploy.jar!/META-INF/MANIFEST.MF
jar:file:/C:/jre32/1.7.0_45/lib/plugin.jar!/META-INF/MANIFEST.MF
jar:file:/C:/jre32/1.7.0_45/lib/deploy.jar!/META-INF/MANIFEST.MF
Trace level set to 5: all ... completed.Trace level set to 5: all ... completed.
security: resource name "META-INF/MANIFEST.MF" in http://localhost/test/testcase.jar : java.lang.SecurityException: trusted loader attempted to load sandboxed resource from http://localhost/test/testcase.jar

testcase.jar 已签名。它甚至包含所有新的清单属性: 应用程序名称:测试用例 权限:所有权限 代码库:*

从部署.jar 到 7u40 到 7u45 的反编译 CPCallBackHandler 的差异显示了显着的变化。 LiveConnect 的更改似乎破坏了现有功能。不,这里不涉及 LiveConnect。

还有其他人遇到过这个吗?关于解决方法的建议?提交错误?

(注:也发布在 OTN java 论坛上,但我希望在这里能得到更快的答案:)。

谢谢, 克里斯


将其添加到 jar 的清单中:

Trusted-Library: true

记录在案here https://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/manifest.html#trusted_library.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java jre 7u45 破坏了 classloader.getResources()? 的相关文章

  • 在 Eclipse 中隐藏重复的工具栏项

    我不知道如何 但我的 STS 有重复的工具栏项目 我不知道如何删除它们 这是我复制的工具栏的样子 我想摆脱这些 我试图隐藏工具栏 但这没有帮助 有人知道如何删除重复的吗 自从升级到 Oxygen 以来 我一直遇到同样的问题 我无法可靠地重现
  • 如何抑制 Cucumber/Junit 断言堆栈跟踪

    我有一个黄瓜场景 该步骤使用assertEquals 我的结果报告显示了对最终用户不友好的堆栈跟踪 我怎样才能抑制它 Scenario Add two numbers Given I have two inputs 3 and 2 When
  • Java HashMap 嵌套泛型与通配符

    我正在尝试创建包含自定义类的不同子类的哈希集的哈希映射值的哈希映射 如下所示 HashMap
  • 我应该使用 JDBC getNString() 而不是 getString() 吗?

    我们正在构建一个由 Oracle 数据库支持的 Java 应用程序 我们使用 JDBC 驱动程序 访问该数据库ojdbc6 jar and orai18n jar 数据库模式主要使用以下方式存储文本列NVARCHAR2数据类型 The JD
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • 欧拉项目 45

    我还不是一名熟练的程序员 但我认为这是一个有趣的问题 我想我应该尝试一下 三角形 五边形 六边形 数字由以下生成 公式 三角形 T n n n 1 2 1 3 6 10 15 五边形 P n n 3n 1 2 1 5 12 22 35 六角
  • 生产者程序中的 kafka 网络处理器错误(ArrayIndexOutOfBoundsException:18)

    我有下面的 kafka Producer Api 程序 我对 kafka 本身是新手 下面的代码从 API 之一获取数据并将消息发送到 kafka 主题 package kafka Demo import java util Propert
  • 使用 equals 方法比较两个对象,Java

    我有一个对象数组 我想将它们与目标对象进行比较 我想返回与目标对象完全匹配的对象的数量 这是我的计数方法 public int countMatchingGhosts Ghost target int count 0 for int i 0
  • 如何构建和使用 TimeSeriesCollections

    我想在图表的 X 轴上显示一些日期 并且here https stackoverflow com questions 5118684 jfreechart histogram with dates据说我必须使用 TimeSeriesColl
  • Java8 项目上的 SonarQube 给出 jacoco-Exception

    我刚刚下载了最新版本 SonarQube 4 3 然后尝试使用以下命令构建 java 8 项目 mvn clean install mvn sonar sonar 这给了我下面的例外 谷歌搜索 我的印象是这是一个早期的问题 应该已经解决 h
  • 如何从 Trie 中检索给定长度的随机单词

    我有一个简单的 Trie 用来存储大约 80k 长度为 2 15 的单词 它非常适合检查字符串是否是单词 但是 现在我需要一种获取给定长度的随机单词的方法 换句话说 我需要 getRandomWord 5 来返回 5 个字母的单词 所有 5
  • SDK尚未初始化,请务必先调用FacebookSdk.sdkInitialize()

    我在实现 Facebook SDK 时遇到此错误 并且我tried https stackoverflow com questions 15490399 error inflating class com facebook widget l
  • 从特定 JAR 文件读取资源(文件的重复路径)

    假设您有 jar1 和artifactId 动物园 jar2 和artifactId 动物 两个 jar 都有一个具有相同路径的资源文件 例如 animals animal txt 有什么方法可以从特定的 jar 中读取该文件吗 使用 ge
  • 如何在 Java 中创建一个带有连字符的值的静态枚举?

    如何创建如下所示的静态枚举 static enum Test employee id employeeCode 截至目前 我遇到了错误 这对于 Java 来说是不可能的 因为每个项目都必须是有效的标识符 并且有效的 Java 标识符可能不包
  • 在java中创建一个XML树并将其转换为json对象

    我尝试创建也能够转换为 json 的树 但对于只有一个xpath 当我尝试实现多个 xpath 时 我无法获得所需的输出 这里我分享一下我的实现 private static Document addElemtbypath List
  • 设置 Firefox 配置文件以使用 Selenium 和 Java 自动下载文件

    我想使用 Selenium WebDriver 和 Java 验证文件下载 要下载的文件为 PDF 格式 当 WebDriver 单击 AUT 中的 下载 链接时 Firefox 将打开以下下载确认窗口 我希望 Firefox 自动下载文件
  • 如何在apache POI中读取excel文件的准确单元格内容

    当我读取单元格的内容时 例如如果它是日期格式 它会转换为另一个值 例如 12 31 2099 gt 46052 和 50 00 gt 50 和 50 00 gt 0 5 但我想要的是获取每个单元格的确切字符串值 我的代码是这样的 cell
  • while循环只执行一次

    我很难弄清楚为什么 while 循环实际上不会循环 它运行一次并停止 import java util public class mileskm public static void main String args Scanner inp
  • 膨胀类 android.support.design.widget.CoordinatorLayoute 时出错

    我正在尝试运行我的应用程序 但不断收到标题中列出的错误 我读过周围的内容 人们说尝试将主题更改为 AppCombat 主题 但这似乎不起作用 以下是我遇到的错误 Process com example jmeyer27 crazytiles
  • Swing:创建可拖动组件...?

    我在网上搜索了可拖动 Swing 组件的示例 但我发现示例不完整或不起作用 我需要的是一个摇摆组件那可以是dragged通过鼠标 在另一个组件内 被拖拽的时候 应该已经 改变它的位置 而不仅仅是 跳 到目的地 我很欣赏无需非标准 API 即

随机推荐

  • maven-assemble-plugin、maven-jar-plugin 和 maven-shade-plugin 之间的区别?

    我是 Maven 的初学者 现在我对以下 3 个 Maven 插件之间的区别感到困惑 maven assembly plugin maven jar plugin maven shade plugin 所有这些都会创建 jar 文件吗 如果
  • 我想用Java读取txt文件放在哪里?

    如果我使用 Java 在 Eclipse 中构建一个应用程序 并且我希望该应用程序从 txt 文件中读取 我应该将 txt 文件放在包中的什么位置 以便不必指定其路径 这样我就可以说 文件 txt 我以为它应该放在 src 文件夹中 但它不
  • Pandas.read_excel 将日期读取到时间戳中,我想要一个字符串

    我使用以下命令将一个大的 Excel 文件读入 pandas read excel 并且该文件具有日期列 当读入 pandas 时 日期默认为时间戳 由于文件很大 我想将日期作为字符串读取 如果这是不可能的 那么我至少想以与原始文件中相同的
  • 为什么主容器上有垂直滚动条?

    我在这里很困惑 自从body为 100 宽度 高度 并且main container也是100 宽 高 为什么会有垂直滚动 我创建了一个 jsFiddle 来解释这种情况 http jsfiddle net dcnnvgs1 1 http
  • 重载的方法组参数会混淆重载解析吗?

    以下调用重载Enumerable Select http msdn microsoft com en us library system linq enumerable select aspx method var itemOnlyOneT
  • EntityFramework 不保存 null 和 false 值

    我正在尝试通过附加断开连接的实体来使用 EntityFramework 6 更新记录 我想将单个布尔字段更新为false但它不起作用 我使用了 sql server profiler 并且在上下文中调用 SaveChanges 时 EF 不
  • stanford corenlp python 与 pexpect 错误

    我正在尝试从 stanford corenlp python 包运行 corenlp py 当我运行它时 我收到此错误 Traceback most recent call last File corenlp py line 592 in
  • List集合中的Select方法

    我有一个 asp net 应用程序 现在我正在使用数据集进行数据操作 我最近开始将此数据集转换为列表集合 但是 在某些地方它不起作用 一是在我的旧版本中我正在使用datarow drow dataset datatable select s
  • Ray on slurm - 初始化问题

    我写这篇文章是因为自从我使用 slurm 以来 我一直无法正确使用 ray 每当我使用命令时 ray init trainer A3CTrainer env my env 我已经在tune上注册了我的env 程序崩溃并显示以下消息 core
  • 将facet_wrap分割成多页PDF

    我已经四处寻找解决方案 但似乎大多数处理将单独生成的图合并为 PDF 格式 而不是将使用分面生成的图分离到 PDF 的单独页面上 示例数据 https drive google com file d 0B8KPGzjWWaw7V0s3UG0
  • mysql - 如何连接字符串并将字符串转换为日期?

    请看一下我的存储过程代码 CREATE DEFINER ninjaboy PROCEDURE getMonthlyTotalScore IN ninjaId int IN month int IN year int BEGIN DECLAR
  • Python - 使用defaultdict制作自定义对象的字典

    我创建了以下课程 包 网站和评论都是字符串 distroDict 是一个 string list 字典 class TableEntry object def init self package website distroDict com
  • 在加载和 Ajax 加载的内容上运行 JS 代码

    请看这个 HTML 代码 div class grid h2 First h2 p Second p div div class grid h2 First h2 p Second p div 我可以使用以下代码更改页面加载时元素的顺序 g
  • C++ lambda 函数的默认调用约定是什么?

    下面的代码是用VC 2012编译的 void f1 void stdcall void f2 void cdecl void cdecl h1 void stdcall h2 int main f1 h1 error C2664 f2 h2
  • Azure - 一个“块 blob”是否被视为一个文件?

    问题背景 这可能是一个简单的问题 但我找不到答案 我刚刚开始使用 Azure 存储 用于存储图像 想知道一个 blob 是否最多可容纳一个文件 这是我的容器 名为fmfcpics 在容器内我有一个名为的块 blobmyBlob其中我有一张图
  • CA2227 的解决方案还是更好的方法?

    我仅使用代码分析来清理 组织并确保针对特定警告的所有实例全局执行这些更改 我已经进入决赛了 比赛是 CA2227 CA2227 集合属性应为只读 将 更改为 通过删除属性设置器来只读 请注意 这是用于 EDI 文档的映射 这些类代表 EDI
  • 降落伞分段错误 - pygame 到 py2exe

    我正在使用 GUI2Exe 将我的 python pygame 游戏编译为 exe 我的字体模块有问题 使用 python 2 7 和 GUI2Exe 中的 py2exe 选项 我已经将 python pygame 和 py2exe 更新为
  • Chrome 的 colspan 和 border 错误?

    在下面的示例中 右侧单元格的顶部有一个边框 它只出现在 Chrome 中 是 Chrome 的 bug 吗 HTML CSS html body height 100 table border collapse collapse width
  • 在 Flutter 中重新发送 OTP 代码 Firebase 电话身份验证

    这可能是重复的 但任何其他线程都没有为我提供正确的答案 有关于 android 原生语言的答案 但没有关于 Flutter dart 的答案 我有以下有效方法 但如果我想将 OTP 重新发送到用户电话号码 我该怎么做 只需一个简单的示例代码
  • java jre 7u45 破坏了 classloader.getResources()?

    我有代码迭代 classLoader getResources META INF MANIFEST MF 的结果以返回类路径上的 jar 列表 从 1 6 0 18 一直到 1 7 0 40 这都工作得很好 现在 1 7 0 45 通过显示