Kaydet (Commit) 52ffad9b authored tarafından Stephan Bergmann's avatar Stephan Bergmann

tdf#100501: Adapt to Java 9 (at least on Linux x86-64)

Checking with both jdk-9+181_linux-x64_bin.tar.gz and
jre-9+181_linux-x64_bin.tar.gz as currently available at
<http://jdk.java.net/9/> "JDK 9 Early-Access Builds":

For one, make SunVersion::init understand <http://openjdk.java.net/jeps/223>
"JEP 223: New Version-String Scheme" at least insofar as to accept strings like
"9" with less than three dot-separated segments (where the missing segments are
treated like "0").

For another, at least for Linux x86-64, libjvm.so is now apparently located in a
path without an "amd64" architecture segment, "lib/server/libjvm.so".  (But
could that also be "client"?)  Other platforms may need further adjustments.

Change-Id: Idcebc833472c81a1dc74dcdd481b0a37274a8713
üst f33cf53c
......@@ -68,7 +68,8 @@ char const* const* SunInfo::getRuntimePaths(int * size)
"/lib/" JFW_PLUGIN_ARCH "/client/libjvm.so",
"/lib/" JFW_PLUGIN_ARCH "/server/libjvm.so",
"/lib/" JFW_PLUGIN_ARCH "/classic/libjvm.so",
"/lib/" JFW_PLUGIN_ARCH "/jrockit/libjvm.so"
"/lib/" JFW_PLUGIN_ARCH "/jrockit/libjvm.so",
"/lib/server/libjvm.so"
#endif
};
*size = SAL_N_ELEMENTS(ar);
......
......@@ -88,7 +88,7 @@ bool SunVersion::init(const char *szVersion)
! (nPartPos == 0) // prevents: ".4.1", "..1", part must start with digit
&& (
//separators after maintenance (1.4.1_01, 1.4.1-beta, or 1.4.1)
((pCur == pEnd || *pCur == '_' || *pCur == '-') && (nPart == 2 ))
(pCur == pEnd || *pCur == '_' || *pCur == '-')
||
//separators between major-minor and minor-maintenance
(nPart < 2 && *pCur == '.') )
......@@ -97,6 +97,8 @@ bool SunVersion::init(const char *szVersion)
pCur + 1 != pEnd
|| rtl::isAsciiDigit(static_cast<unsigned char>(*pCur))) )
{
bool afterMaint = pCur != pEnd && (*pCur == '_' || *pCur == '-');
int len = pCur - pLast;
if (len >= 127)
return false;
......@@ -107,6 +109,9 @@ bool SunVersion::init(const char *szVersion)
pLast = pCur;
m_arVersionParts[nPart] = atoi(buf);
if (afterMaint)
nPart = 2;
nPart ++;
nPartPos = 0;
if (nPart == 3)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment