首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jaotc编译后还需要原始的类文件吗?

在jaotc编译后还需要原始的类文件吗?
EN

Stack Overflow用户
提问于 2018-06-14 01:54:58
回答 2查看 233关注 0票数 1

对于那些了解jaotc的人,我有一个简单的问题要问你。

在此之后

代码语言:javascript
复制
javac HelloWorld.java
jaotc --output HelloWorld.so HelloWorld.class

你可以运行

代码语言:javascript
复制
java -XX:AOTLibrary=./HelloWorld.so HelloWorld

没有任何问题。这是互联网上随处可见的。我没意见。

但是,如果将HelloWorld.class移动到不在类路径中的其他位置,并运行

代码语言:javascript
复制
java -XX:AOTLibrary=./HelloWorld.so HelloWorld

再一次,你会得到一个class not found错误。

所以仍然需要原始的.class文件?那么做AOT有什么意义呢?

EN

回答 2

Stack Overflow用户

发布于 2018-07-25 10:33:15

是的,至少到目前为止。你可以参考http://openjdk.java.net/jeps/295

由于类字节码可能会随着时间的推移而发生变化,无论是通过更改源代码还是通过类转换和重新定义,

都需要检测这种更改,并在字节码不匹配时拒绝使用AOT编译的代码。这是通过类指纹识别实现的。在AOT编译期间,将生成每个类的指纹,并将其存储在共享库的数据部分中。稍后,当加载一个类并找到该类的AOT编译代码时,会将当前字节码的指纹与存储在共享库中的指纹进行比较。如果存在不匹配,则不使用该特定类的aot码。

票数 0
EN

Stack Overflow用户

发布于 2019-08-25 16:58:00

当我发现我的本机版本“我的世界”中唯一加载的Java Native Image是java.base的时候,我怀疑这一点。我不知道为什么,直到我读到这篇文章。

如果可能的话,AOT图像只是可供选择的图像。它们不是原始Java字节码的替代品。

这样做只是为了防止JVM参数不同和/或在不同的平台上运行。我相信,如果您正在尝试创建一个Java Native应用程序,IKVM.NET更适合您的目的。

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

https://stackoverflow.com/questions/50843428

复制
相关文章

相似问题

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