首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jol在Java9下有点崩溃了吗?

jol在Java9下有点崩溃了吗?
EN

Stack Overflow用户
提问于 2016-12-26 12:45:14
回答 1查看 3.4K关注 0票数 10

使用java-9构建9-ea+149和jol 0.6.

运行以下简单代码:

代码语言:javascript
复制
ArrayList<Integer> list = new ArrayList<>();
list.add(12);

System.out.println(ClassLayout.parseInstance(list).toPrintable());

输出:

代码语言:javascript
复制
  OFFSET  SIZE     TYPE DESCRIPTION                    VALUE
  0     4          (object header)                01 00 00 00 (00000001 00000000 00000000 00000000) (1)
  4     4          (object header)                00 00 00 00 (00000000 00000000 00000000 00000000) (0)
  8     4          (object header)                0e 8d 00 f8 (00001110 10001101 00000000 11111000) (-134181618)
 12     4      int AbstractList.modCount          (access denied)
 16     4      int ArrayList.size                 (access denied)
 20     4 Object[] ArrayList.elementData          (access denied)

此访问拒绝部分来自方法中的FieldData.java:

代码语言:javascript
复制
public String safeValue(Object object) {
    if (refField != null) {
        try {
            return ObjectUtils.safeToString(refField.get(object));
        } catch (IllegalAccessException iae) {
            // exception, try again
        }

        try {
            refField.setAccessible(true);
            return ObjectUtils.safeToString(refField.get(object));
        } catch (Exception e) {
            return "(access denied)";
        }
    } else {
        return "N/A";
    }
}

而实际的例外是:

无法使字段保护的瞬态int java.util.AbstractList.modCount可访问:模块java.base不对未命名的模块@479d31f3“打开java.util”。

我认为这与不安全的功能被锁定有关。问题是我怎样才能让它运行?

我看过这样的房产:

代码语言:javascript
复制
-XaddExports:java.base/sun.security.provider=ALL-UNNAMED

但却不知道它应该是什么样子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-26 13:01:51

解决办法确实是提出正确的论点。

代码语言:javascript
复制
--add-opens java.base/java.util=ALL-UNNAMED

如建议的那样here

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41331515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档