修改java.lang.String类时出错?

本人想修改java.lang.String类,然后导出成jar,代替原来虚拟机的String类使用,但是在添加一个布尔数组后,导出成jar并使用时出现下面的错误:

Error occurred during initialization of VM
java.lang.ExceptionInInitializerError
Caused by: java.lang.IllegalArgumentException: name can't be empty
at java.security.BasicPermission.init(Unknown Source)
at java.security.BasicPermission.(Unknown Source)
at java.lang.RuntimePermission.(Unknown Source)
at java.lang.Thread.(Unknown Source)

添加的数组形式如下:
private boolean barray[];

如果改成private boolean barray; 则可正确运行。
如果改成跟String源码中的value一样:private final char value[]; 也不行。
百思不得其解,有人知道是怎么回事么?

15个回答

还是请在[url=http://hllvm.group.iteye.com/]高级语言虚拟机[/url]群组新开个帖来讨论吧?问答频道上讨论很费力。

请先说明为什么要加字段。或许有别的办法能实现你的真实需求。改VM是个精密工作,除非你有信息、有能力、有毅力去维护你的修改,不然我不建议在生产环境对VM做任何修改。我们这边也费了九牛二虎之力才说服PE部署我们修改过的VM…

[code="java"]String是final类型不能修改,不能被继承呀 [/code]

这个类还是不要改动的好,越基础的类,改动风险非常大,像这个类是约定好了的,基本上是所以其他api的基础,不可以改的。

[code="java"]这个类还是不要改动的好,越基础的类,改动风险非常大,像这个类是约定好了的,基本上是所以其他api的基础,不可以改的。[/code]

建议别改

String类是final类型,不可继承,不知道是什么样复杂的需求让你需要修改String类?如果想修改String类,还是自己去写一个类似实现String功能的类,再在项目中使用即可,不过这样的工作量有点大哦。

private boolean barray[]
这数组应该是这样定义的吧
private boolean[] barray

[quote]改成private boolean barray; 则可正确运行[/quote]
那你试试改成private boolean[] barray;可不可以

对[code="java"]private boolean[] barray;[/code]

[quote]xbootclasspath命令使虚拟机在调用原来的String类时先调用它[/quote]
想知道你所说的打包jar是把整个jdk打包?还是说你修改的String类就是一个你自定义的类呢?还有就是你的命令是如何写的?

共15条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!