ํ๋ซํผ & : ์ํคํ
์ฒ :
Windows10.0.18362
OpenJDK11U-jre_x64_windows_hotspot_11.0.6_10.zip
OpenJDK11U-jre_x86-32_windows_hotspot_11.0.6_10.zip
๋ฌธ์ ์ฌํ ๋จ๊ณ :
$ jdkๆผขๅญๅซใ\bin\java -version
Error occurred during initialization of VM
Unable to load native library:
$ ren jdkๆผขๅญๅซใ jdk
$ jdk\bin\java -version
openjdk version "11.0.6" 2020-01-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.6+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.6+10, mixed mode)
jdk-11.0.5 + 10-jre๋ก ์ธํด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์์ต๋๋ค.
๋ฐ์ด๋๋ฆฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
ํ๊ธ๋ ๋๊ฐ์ ๊ฒ ๊ฐ์์
๋ด ์ฑ์์ ์ฌ์ฉ์๊ฐ๋ณด๊ณ ํ์ต๋๋ค. jlink๋ jdk-11.0.6 + 10์ผ๋ก ๋น๋ํฉ๋๋ค.
๊ทธ๋ฆผ์ ์์ ์คํฌ๋ฆฝํธ
<strong i="10">@echo</strong> off
set DIR="%~dp0"
set JAVA_EXEC="%DIR:"=%\java"
%JAVA_EXEC% -p "%~dp0/../app" -m com.pmm.ParadoxosGameModManager/com.pmm.ParadoxosGameModManager.ModManager %*
ํธ์ง : 11.0.5๋ก ํ ์คํธํ์ฌ ์๋ํ๋์ง ํ์ธํ์ญ์์ค.
@ himawari-san adaptopenjdk.net/upstream.html์์ 11.0.6์ ์ฌ์ฉํด ์ฃผ์๊ฒ ์ต๋๊น?
@karianna ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๊ทํ์ ์ง์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ์ ์คํธ๋ฆผ์ ๋ฒ๊ทธ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ์ฌ jdk / jdk ์์ค์์์ด ๋ฌธ์ ๋ฅผ ํ์ธํ์ต๋๋ค. CJK ๋ฌธ์๋ฅผ ํฌํจํ๋ ๋ชจ๋ ๊ฒฝ๋ก์์ ๋ฐ์ํฉ๋๋ค.
์๋์ ๊ฐ์ด ํจ์น๋ก ๊ณ ์น ์ ์์ผ๋ฏ๋ก OpenJDK์์ hotspot-runtime-dev์ ๋ํ ๊ฒํ ์์ฒญ์ ๋ณด๋ด๊ณ ์ถ์ต๋๋ค. OpenJDK ์ปค๋ฎค๋ํฐ์์ ์ผํ ์ ์ด ์์ต๋๊น? ๊ทธ๋ ์ง ์๋ค๋ฉด JBS์ ์ ์ถํ๊ฒ ์ต๋๋ค.
diff --git a/src/hotspot/os/windows/os_windows.cpp b/src/hotspot/os/windows/os_windows.cpp
--- a/src/hotspot/os/windows/os_windows.cpp
+++ b/src/hotspot/os/windows/os_windows.cpp
@@ -4207,14 +4207,16 @@
size_t prefix_len = wcslen(prefix);
size_t full_path_size = is_abs ? 1 + buf_len : JVM_MAXPATHLEN;
size_t result_size = prefix_len + full_path_size - prefix_off;
- result = (wchar_t*) os::malloc(sizeof(wchar_t) * (additional_space + result_size), mtInternal);
+ size_t result_buffer_size = sizeof(wchar_t) * (additional_space + result_size);
+ result = (wchar_t*) os::malloc(result_buffer_size, mtInternal);
if (result == NULL) {
err = ENOMEM;
} else {
- size_t converted_chars;
+ ZeroMemory(result, result_buffer_size);
wchar_t* path_start = result + prefix_len - prefix_off;
- err = ::mbstowcs_s(&converted_chars, path_start, buf_len + 1, buf, buf_len);
+ int win32_ret = MultiByteToWideChar(CP_THREAD_ACP, MB_ERR_INVALID_CHARS, buf, (int)buf_len, path_start, (int)(buf_len + 1));
+ err = (win32_ret == 0) ? EINVAL : ERROR_SUCCESS;
if ((err == ERROR_SUCCESS) && needs_fullpath) {
wchar_t* tmp = (wchar_t*) os::malloc(sizeof(wchar_t) * full_path_size, mtInternal);
@YaSuenag ์๋, ์ ํ์ด์. ๋์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ JBS์๋ณด๊ณ ํ๊ณ hotspot-runtime-dev์ ๊ฒํ ์์ฒญ์ ๋ณด๋์ต๋๋ค.
https://bugs.openjdk.java.net/browse/JDK-8240197
https://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/2020-February/038330.html
@YaSuenag ๊ทํ์ ๊ธฐ์ฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/2020-March/038397.html
์ด ๋ฌธ์ ๋ฅผ jdk / jdk ์์ ์์ ํ๊ณ jdk / jdk11u-dev๋ก ๋ฐฑ ํฌํธํ์ต๋๋ค. 11.0.8์์ ๋ฐฐ์ก๋ฉ๋๋ค. 11.0.8 ์ดํ CJK ๊ฒฝ๋ก์์ AdoptOpenJDK 11์ ์ฌ์ฉํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ๋ฌธ์ ๋ฅผ jdk / jdk ์์ ์์ ํ๊ณ jdk / jdk11u-dev๋ก ๋ฐฑ ํฌํธํ์ต๋๋ค. 11.0.8์์ ๋ฐฐ์ก๋ฉ๋๋ค. 11.0.8 ์ดํ CJK ๊ฒฝ๋ก์์ AdoptOpenJDK 11์ ์ฌ์ฉํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.