- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在运行 Suse Linux Enterprise Server 11 SP2 的 Itanium 服务器上构建 openjdk7 时遇到了一些棘手的问题。
我已成功安装 Sun JDK 1.6 update 33 作为安装的 Bootstrap 。而且,我已经下载了源代码并将 openJDK7 安装源解压到一个目录中。我的构建通过了所有 make sanity
检查,看起来已经准备就绪。
我已取消设置 JAVA_HOME,声明 LANG=C,并将构建指向引导 JDK。
然后我调用 make ALLOW_DOWNLOADS=false ALT_BOOTDIR=/usr/java/jdk1.6.0_33 ALT_DROPS_DIR=~/openjdk_src/sourcedrop
构建运行正常大约 5-10 分钟,然后我收到一串关于未找到 SSL 库的错误。
这发生在 jaxws 源代码树中构建的以下部分中,并且似乎与 SSL 有关:
[javac] Compiling 2735 source files to /root/openjdk_src/openjdk/build/linux-ia64/jaxws/build/classes
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/DOMForest.java:54: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HttpsURLConnection;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/DOMForest.java:55: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HostnameVerifier;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/DOMForest.java:56: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSession;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:54: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HostnameVerifier;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:55: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HttpsURLConnection;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:56: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSession;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:218: error: cannot find symbol
[javac] private static class HttpClientVerifier implements HostnameVerifier {
[javac] ^
[javac] symbol: class HostnameVerifier
[javac] location: class MetadataFinder
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:219: error: cannot find symbol
[javac] public boolean verify(String s, SSLSession sslSession) {
[javac] ^
[javac] symbol: class SSLSession
[javac] location: class HttpClientVerifier
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/developer/JAXWSProperties.java:32: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HostnameVerifier;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/developer/JAXWSProperties.java:33: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HttpsURLConnection;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/developer/JAXWSProperties.java:34: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSocketFactory;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:39: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSocketFactory;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:40: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HttpsURLConnection;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:41: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HostnameVerifier;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:42: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSession;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:302: error: cannot find symbol
[javac] private static class HttpClientVerifier implements HostnameVerifier {
[javac] ^
[javac] symbol: class HostnameVerifier
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:303: error: cannot find symbol
[javac] public boolean verify(String s, SSLSession sslSession) {
[javac] ^
[javac] symbol: class SSLSession
[javac] location: class HttpClientVerifier
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:154: error: cannot find symbol
[javac] if (conn instanceof HttpsURLConnection) {
[javac] ^
[javac] symbol: class HttpsURLConnection
[javac] location: class WSEntityResolver
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:156: error: cannot find symbol
[javac] ((HttpsURLConnection) conn).setHostnameVerifier(new HttpClientVerifier());
[javac] ^
[javac] symbol: class HttpsURLConnection
[javac] location: class WSEntityResolver
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:207: error: cannot find symbol
[javac] if (httpConnection instanceof HttpsURLConnection) {
[javac] ^
[javac] symbol: class HttpsURLConnection
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:223: error: cannot find symbol
[javac] ((HttpsURLConnection) httpConnection).setHostnameVerifier(new HttpClientVerifier());
[javac] ^
[javac] symbol: class HttpsURLConnection
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:227: error: cannot find symbol
[javac] HostnameVerifier verifier =
[javac] ^
[javac] symbol: class HostnameVerifier
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:228: error: cannot find symbol
[javac] (HostnameVerifier) context.invocationProperties.get(JAXWSProperties.HOSTNAME_VERIFIER);
[javac] ^
[javac] symbol: class HostnameVerifier
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:230: error: cannot find symbol
[javac] ((HttpsURLConnection) httpConnection).setHostnameVerifier(verifier);
[javac] ^
[javac] symbol: class HttpsURLConnection
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:234: error: cannot find symbol
[javac] SSLSocketFactory sslSocketFactory =
[javac] ^
[javac] symbol: class SSLSocketFactory
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:235: error: cannot find symbol
[javac] (SSLSocketFactory) context.invocationProperties.get(JAXWSProperties.SSL_SOCKET_FACTORY);
[javac] ^
[javac] symbol: class SSLSocketFactory
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:237: error: cannot find symbol
[javac] ((HttpsURLConnection) httpConnection).setSSLSocketFactory(sslSocketFactory);
[javac] ^
[javac] symbol: class HttpsURLConnection
[javac] location: class HttpClientTransport
[javac] Note: Some input files use or override a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 27 errors
为了解决这个问题,我将 jsse.pack
解压到 jdk/jre/bin
中的 jsse.jar
中。
然后,如果我记得使用 make ALLOW_DOWNLOADS=false ALT_BOOTDIR=/usr/java/jdk1.6.0_33 ALT_DROPS_DIR=~/openjdk_src/sourcedrop DISABLE_HOTSPOT_OS_VERSION_CHECK=ok
来忽略架构。
当在虚拟机中生成 adlc 时,构建会失败:
Making adlc
g++ -Wl,-relax -Xlinker -O1 -Xlinker -export-dynamic -o ../generated/adfiles/adlc
../generated/adfiles/adlparse.o ../generated/adfiles/arch Desc.o
../generated/adfiles/arena.o ../generated/adfiles/dfa.o ../generated/adfiles/dict2.o
../generated/adfiles/filebuff.o ../generated/adfil es/forms.o
../generated/adfiles/formsopt.o ../generated/adfiles/formssel.o
../generated/adfiles/main.o
../generated/adfiles/adlc-opcodes.o ../ generated/adfiles/output_c.o
../generated/adfiles/output_h.o
make[6]: *** No rule to make target
`/root/openjdk_src/openjdk/hotspot/src/cpu/ia64/vm/.ad', needed by
`../generated/adfiles/linux_.ad'. Stop .
现在怎么办?什么是 adlc?为什么它不能构建?
最佳答案
我最近才偶然发现这个(仍然悬而未决)的问题,近几个月来尝试过类似的事情;并且也遇到(并解决)了同样的问题。
'adlc'是HotSpot的架构描述语言编译器,即 ADLC。它用于生成HotSpot构建的Java执行引擎(解释器和JIT编译器)的源代码;基于处理“.ad
”文件。如果您获得要构建的 ADLC 工具,其“用法”如下所示:
$> ./adlc
Architecture Description Language Compiler
Usage: adlc [-doqwTs] [-#]* [-D<FLAG>[=<DEF>]] [-U<FLAG>] [-c<CPP_FILE_NAME>] [-h<HPP_FILE_NAME>] [-a<DFA_FILE_NAME>] [-v<GLOBALS_FILE_NAME>] <ADL_FILE_NAME>
d produce DFA debugging info
o no output produced, syntax and semantic checking only
q quiet mode, supresses all non-essential messages
w suppress warning messages
T make DFA as many subroutine calls
s output which instructions are cisc-spillable
D define preprocessor symbol
U undefine preprocessor symbol
c specify CPP file name (default: (null))
h specify HPP file name (default: (null))
a specify DFA output file name
v specify adGlobals output file name
# increment ADL debug level
您的构建问题是您无法避免“架构”检测! (事实上,您对“DISABLE_HOTSPOT_OS_VERSION_CHECK=ok”的使用甚至可能值得怀疑。)但是,它比(仅)更糟糕:IA64(除了Windows,直到Windows Server 2008 R2(扩展)支持结束......到2020年?)正在从Java 7 OpenJDK源代码树中删除,并且位已被删除/正在被主动删除(和/或没有得到维护?)。具体来说,这就是 Makefile
支持系统的某些 HotSpot/OpenJDK 构建配置组件的问题,该系统是指定所有架构资格来定位/处理 Linux Itanium/IA64 架构上所需的“.ad
”文件所必需的。具体来说,您缺少正确文件名扩展所需的某些关键定义:[...]/cpu/ia64/vm/.ad
和 ../generated/adfiles/linux_.ad
显然不是正确的、完全架构限定的文件/目标名称(因此未找到)。
上面涉及的文件/目标的正确名称实际上是 ../generated/adfiles/linux_ia64.ad
,它是通过目标名称中的环境变量替换而产生的,但缺少 ${arch_model}
的定义(另一个环境变量 ${os_arch_model}
也存在类似的情况)。这些在 [JDK_distribution]/hotspot/make
的 'linux
' 目录下的 'platform_ia64
' 中不存在(疏忽?)。简单回顾一下linux下的其他平台文件,你应该看到'arch_model
'应该采用'arch
'的值,即ia64
,同样,'os_arch_model
'采用与'os_arch
'相同的值,即linux_ia64
。
[Java7 JDK distribution]/hotspot/make $ cat platform_ia64
os_family = linux
arch = ia64
arch_model = ia64 # Added
os_arch = linux_ia64
os_arch_model = linux_ia64 # Added
lib_arch = ia64
compiler = gcc
gnu_dis_arch = ia64
sysdefs = -DLINUX -D_GNU_SOURCE -DIA64 -DCC_INTERP
mark_style = alignment
仅通过该修改/更正,您就应该能够成功完成 OpenJDK 构建的这些初始步骤。(我可以通过 ADLC 构建,但后来在构建过程中失败,因为另一个源代码区域已从后来的 IA64 源代码中删除......)祝您好运!
关于compilation - 在 Suse Enterprise Linux Server 上构建适用于 Itanium64 的 openjdk7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11230692/
有人告诉我: [ABIs] guarantee the exact layout of the struct, byte offset of every member, which bits are
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
我正在阅读 here关于如何选择主要碱基: "...2. If C is a dynamic class type: a. Identify all virtual base classes, dir
寻找可用于检测 HP-UX Itanium 平台上的静态/运行时内存泄漏的各种工具(免费/商业)。 背景,我们: 使用 HP-UX 11.31 ia64。但是,我们所有的应用程序仍然只有 32 位。
Itanium ABI 指出异常的内存是通过调用 __cxa_allocate_exception(size) 获得的。返回内存的对齐保证是什么? 最佳答案 Section 1.2 in chapte
我正在开发 C/C++ 跨平台代码,最后一个平台是基于 Itanium 的 HP-UX。问题末尾可以找到相关的机器和处理器信息。 我需要为下面给出的机器和编译器规范实现或找到原子比较和交换。 我已经找
我正在尝试调试使用 libevent 库的代码。在该库中,有一个函数 event_new 假设创建一个 event_cb。不知何故,在我分派(dispatch)事件库后,无法调用或访问 event_c
我需要在 HPUX(Itanium 和 PARISC)中获取用于交换信息的命令。 最佳答案 这是 unix.stackexchange 的链接那对我有帮助。谢谢@乔纳森 /usr/sbin/swapi
我正在阅读 Itanium ABI上面写着 It is intended that two type_info pointers point to equivalent type descriptio
我需要为 Itanium 编译我的代码,但似乎所有编译器(ecc、gcc、orc)都需要 Itanium 机器来执行此操作。有什么建议吗? 最佳答案 您需要将 gcc 设置为交叉编译器。这涉及到自己构
例如: template struct foo { using bar = int; }; // _Z3bazi void baz(foo::bar quux) { } template
昨天我了解到,针对 AMD64 和 Itanium 目标进行编译时,Microsoft Visual C++ 不支持内联汇编(使用 __asm 关键字)。 这是正确的吗?如果是这样,有谁知道为什么他们
我在同时运行 64 位 Oracle 10.2 的 64 位 Itanium 服务器上运行 Windows Server 2003,我想为 Python 2.5 安装 cx_Oracle。我之前在 W
我是一名优秀的程序员,十分优秀!