AdoptOpenJDK๋ฅผ MacOS ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฒ๋คํ๊ณ ์ถ์ต๋๋ค. Apple์ ๊ณต์ฆ์ธ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ด ์ฑ์ ๋ชจ๋ ์คํ ํ์ผ์ด ๊ฐํ๋ ๋ฐํ์ ์ง์๊ณผ ํจ๊ป ๊ณต๋ ์ค๊ณ๋์ด์ผ ํฉ๋๋ค.
ApoptOpenJDK ์คํ ํ์ผ์ ์ด๋ฏธ ๊ณต๋ ์ค๊ณ๋์์ง๋ง ์ํ๊น๊ฒ๋ ๋ฐํ์ ์ง์์ด ๊ฐํ๋์ง ์์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ง์ ๋ค์ ์๋ช ํ ์ ์์ต๋๋ค.
codesign --verbose --options runtime --force --sign "Developer ID Application: SecSign Technologies Inc." bin/java
๊ทธ๋ฌ๋ ๋ถ๋ช ํ ์ด๊ฒ์ ์คํ ํ์ผ์ ์์์ํต๋๋ค. ์๋ฅผ ๋ค์ด "java"๋ ๋ ์ด์ ํด๋น ๋ฒ์ ์ ์ธ์ํ ์ ์์ต๋๋ค.
java --version
Error occurred during initialization of VM
Could not reserve enough space in CodeHeap 'non-nmethods' (2496K)
ApoptOpenJDK ํ์ AdoptOpenJDK์ ๋น๋ ํ๋ก์ธ์ค์์ ์ฝ๋ ์ค๊ณ ์ค์ ๊ฐํ๋ ๋ฐํ์("--options ๋ฐํ์")์ ํ์ฑํํ ์ ์์ต๋๊น? ์ด๊ฒ์ ํ๋ฅญํ ๊ฒ์ ๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ์๊ฒฌ์ ๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์๋ถ
ํธ๋ก
์ด ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ๋ฉด ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
error: invalid or inappropriate API flag(s) specified
@tkie ์ฌ๊ธฐ์ ๋ ๋ง์ ํต์ฐฐ๋ ฅ์ด ์์ต๋๊น?
https://help.apple.com/xcode/mac/current/#/dev033e997ca ๋ฅผ ๋ณด๋ฉด macOS 10.13 ์ด์์์ ์ฝ๋ ์ค๊ณํด์ผ ํ ์๋ ์์์ ์ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ํ๋ ์ดํ๊ฒ ์ต๋๋ค.
MacOS 10.14.6์์ XCode ๋ฒ์ 10.3(10G8)์ ์ฌ์ฉํฉ๋๋ค.
๊ฐํ๋ ๋ฐํ์์ ์ง์ํ๊ธฐ ์ํ ์ต์ XCode ๋ฒ์ ์ด ๋ฌด์์ธ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ค์ ์๋ก์ด ๊ธฐ๋ฅ์
๋๋ค.
์ฌ๊ธฐ์์ ์ฝ๊ฐ์ ์ง์ ์ ์ด๋ฃจ์์ผ๋ฏ๋ก jdk12 ๋น๋ ํ์ฑํ์ ์๋ช ํ ์ ์์ต๋๋ค. ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด:
Error occurred during initialization of VM
Could not reserve enough space in CodeHeap 'non-nmethods' (2496K)
plist ํ์์ผ๋ก ์ธํ์ดํ๋จผํธ๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
</dict>
</plist>
๊ทธ๋ฐ ๋ค์ ์ฝ๋ ์ค๊ณํ ๋ --entitlements <path to entitlements.plist>
๋ฅผ ํ๋๊ทธ๋ก ์ถ๊ฐํฉ๋๋ค.
์คํ ํ์ผ์ ๊ฒ์ฌํ๋ฉด ์ด์ ๋ฐํ์ ์ต์ ์ ๋ณผ ์ ์์ต๋๋ค.
โ Home codesign -dvvv ./bin/java
Executable=/Users/gdams/tmp/jdk-11.0.4+11/Contents/Home/bin/java
Identifier=net.java.openjdk.cmd
Format=Mach-O thin (x86_64)
CodeDirectory v=20500 size=832 flags=0x10000(runtime) hashes=17+5 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=89dde46e6d5094c92508bc3d95ecf04cbf2e5c6b
CandidateCDHash sha256=7504cd1dc13d553e9cb3d469a508900a34d3cbc7
Hash choices=sha1,sha256
CDHash=7504cd1dc13d553e9cb3d469a508900a34d3cbc7
Signature size=9037
Authority=Developer ID Application: London Jamocha Community CIC (VDX7B37674)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=30 Jul 2019 at 11:12:25
Info.plist entries=4
TeamIdentifier=VDX7B37674
Runtime Version=10.10.0
Sealed Resources=none
Internal requirements count=1 size=180
@tkie ์์ ๋ด์ฉ๋ ํจ๊ณผ๊ฐ ์๋์ง ํ์ธํ ์ ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ํด๋น ๋ณ๊ฒฝ ์ฌํญ์ ๋น๋ ์คํฌ๋ฆฝํธ์ ์ถ๊ฐํ๊ฒ ์ต๋๋ค.
๋ํ entitlements.plist ํ์ผ์ ๋ค์์ ์ถ๊ฐํ์ฌ jdk8์์ ์ด ์์ ์ ์ํํ ์ ์์์ต๋๋ค.
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
@gdams ์ฃ์กํฉ๋๋ค. JDK๋ฅผ ์ง์ ๊ตฌ์ถํ ์ ์ด ์์ต๋๋ค. ์ ๋ ํญ์ ๋ฐ์ด๋๋ฆฌ ๋ฐฐํฌํ์ ๋ค์ด๋ก๋ํ์ต๋๋ค. ์ค๋์ MacOS์ฉ JDK 11 ํ ์คํธ ๋น๋๋ฅผ ์ด๋๊ฐ์์ ๋ค์ด๋ก๋ํ ์ ์๊ฒ ๋ง๋ค ์ ์์ต๋๊น? ๊ทธ๋ฐ ๋ค์ JDK๋ฅผ ๋ฌถ๊ณ ์ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด Apple๋ก๋ถํฐ ๊ณต์ฆ์ ๋ฐ์ ์ ์์ต๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
@tkie JDK11+์์ ๋ชจ๋ ๊ฒ์ ์์ ํ๋ ์์ ์ฌํญ์ ์ ์ฉํ์ต๋๋ค. ์ด ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์ ๋ฆด๋ฆฌ์ค๊น์ง ๋์ ๋์ง ์์ ๊ฒ์ ๋๋ค(์ฌ๋๋ค์ด ์ฆ์ ์ฌ์ฉํ ์ ์๋๋ก ์ฌ์ถ์ ๊ฐ๋ฅ์ฑ์ ๋ํด Adopt ์ฌ๋๋ค๊ณผ ๋ ผ์ํ๊ฒ ์ต๋๋ค.
JDK8์๋ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
The binary uses an SDK older than the 10.9 SDK
๋ด ์ ์์ ๋ฒ๋ค๋ง์ ์ต์ ํ๋ JDK8 ๋น๋๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ์กฐ์ฌํ๋ ๊ฒ์ ๋๋ค(์ฆ, ์ดํ ํด์ฒด์ธ์ ๋น๋๋จ). ๊ทธ๋ฌ๋ ์ด๋ ์ดํ JDK์์ JDK8u ์ ์ฅ์๋ก์ ๋ฐฑํฌํธ ๋ก๋๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ ์์ ์ด ์๋ ์ ์์ต๋๋ค.
@tkie ์ฌ๊ธฐ์์ ์๋ํ ์ ์๋ JDK12 ๋น๋๊ฐ ์์ต๋๋ค. https://ci.adoptopenjdk.net/job/build-scripts/job/jobs/job/jdk12u/job/jdk12u-mac-x64-hotspot/
JDK11 ๋น๋:
https://ci.adoptopenjdk.net/job/build-scripts/job/jobs/job/jdk11u/job/jdk11u-mac-x64-hotspot/
@gdams JDK12 ๋น๋์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. OpenJDK12U-jre_x64_mac_hotspot_2019-07-31-11-04.tar.gz์ JRE๋ฅผ ํฌํจํ๋ ๋ด ์ ํ๋ฆฌ์ผ์ด์ ์ด Apple์์ ๊ณต์ฆ๋์์์ ํ์ธํ ์ ์์ต๋๋ค.
@gdams ๋ํ OpenJDK11U-jre_x64_mac_hotspot_2019-07-31-11-27.tar.gz๋ก ํ
์คํธํ์ต๋๋ค. ๊ณต์ฆ๋ ์ฑ๊ณต์ ์ด์์ต๋๋ค.
๋ด ๊ด์ ์์ ๋ฌธ์ ๋ ํด๊ฒฐ๋์์ผ๋ฉฐ Java 8์ ์กฐ์ฌํ ํ์๊ฐ ์์ต๋๋ค.
Java 11 ์ด์์์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
๋ํ Java 1.8 ๋ฐํ์์ด ํฌํจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณต์ฆํ๋ ค๊ณ ํ ๋ "๋ฐ์ด๋๋ฆฌ๋ 10.9 SDK๋ณด๋ค ์ค๋๋ SDK๋ฅผ ์ฌ์ฉํฉ๋๋ค" ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ํ์ฌ Java 1.8์ ์ ์งํด์ผ ํ๋ฏ๋ก ์ต์ Java๋ก ์ ๊ทธ๋ ์ด๋ํ ์ ์์ต๋๋ค.
์ด ๊ณต์ฆ ํ ์คํธ๋ฅผ ํต๊ณผํ ์ ๋ฐ์ดํธ๋ Java 1.8 ๋ฐํ์์ ์ฌ์ฉํ ์ ์๋ ๋ ์ง๊ฐ ์์ต๋๊น?
๊ณต์ฆ์ ํต๊ณผํ๋ openjdk 8 ๋น๋๋ ์ธ์ ๊ธฐ๋ํ ์ ์์ต๋๊น?
๊ณต์ฆ์ ํต๊ณผํ๋ OpenJDK 8 ๋น๋๋ ์ธ์ ๊ธฐ๋ํ ์ ์์ต๋๊น?
ํ์ฌ๋ก์๋ OpenJDK ๊ณต๊ธ์๊ฐ ์ด ์ง์์ ์ ๊ณตํ์ง ์๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ๋ฌธ์ ๋ jdk8u๊ฐ Mac Os X 10.10์ ๊ตฌ์ถ๋์ด์ผ ํ๋ ๋ฐ๋ฉด ๊ณต์ฆ์ 10.14 ๊ฐ๋ ์ด๋ผ๋ ๊ฒ์ ๋๋ค.
์๋
์ฌ๋ฌ๋ถ,
์ด๊ฒ์ด ์์ ํ ๋ซํ ์๋์ง ํ์คํ์ง ์์ต๋๋ค. ์ต์ macOS OpenJDK 11 JRE(OpenJDK11U-jre_x64_mac_hotspot_11.0.5_10.tar.gz)๋ฅผ ์ฑ๊ณผ ๋ฒ๋ค๋ก ์ ๊ณตํ๊ณ ์์ผ๋ฉฐ ๊ณต์ฆ ํ๋ก์ธ์ค๊ฐ ์ฑ๊ณตํ๋ ๋์ JSON ๋ก๊ทธ์ (์๋ง๋) ์คํจํ ๊ฒ์์ ๋ํ๋ด๋ ์ฌ๋ฌ ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค. ๋ฏธ๋์. ์๋ฅผ ๋ค์ด:
{ "severity": "warning", "code": null, "path": "XYZ.app.zip/XYZ.app/Contents/jdk-11/bin/java", "message": "The executable does not have the hardened runtime enabled.", "docUrl": null, "architecture": "x86_64" },
๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฑ๊ณต์ ์ธ ๊ณต์ฆ์ ๋ณด๊ณ ํ ๊ฒ์ Apple์ด 2020๋ 1์๊น์ง ๊ณต์ฆ ์๊ตฌ ์ฌํญ์ ์ผ์์ ์ผ๋ก ์ํ ํ๊ธฐ ๋๋ฌธ์ผ ์ ์์ต๋๋ค.
๋์์ด ๋๋ ๊ฒฝ์ฐ ๋ก๊ทธ ์ฌ๋ณธ์ ์ ๋ฌํ ์ ์์ต๋๋ค.
JIT ๊ธฐ๋ฅ์ ๋ํ ์๊ฒฉ์ ์ถ๊ฐํ์ต๋๊น? ๊ทธ๊ฒ์ด ์์ผ๋ฉด ๊ณต์ฆ์ ์คํจํฉ๋๋ค. JRE๊ฐ ์ด๊ฒ์ ํ์๋ก ํ๋ค๊ณ ํ์ ํฉ๋๋ค.
https://developer.apple.com/documentation/security/hardened_runtime_entitlements
@gdams์ ์ ์คํธ๋ฆผ ์์ ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ฒ์ ์๋ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ Xcode ๋์ ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ ํํด์ผ ํ ์๋ ์์ง๋ง ํผํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์๋ช ๋จ๊ณ๋ฅผ ๊ฐ์ ํ๋ ๋ฌธ์ ์ผ ์ ์์ต๋๋ค. ๊ณต์ฆ ์ด์ ์๋ ๋ชจ๋ ๊ฒ์ด ๋ ๊ฐ๋จํ์ต๋๋ค ...
๋ถ๋ช ํ, ๊ณต์ฆ์ Apple์ ํ์ฌ ์ํ๋ ์๊ตฌ ์ฌํญ์ผ๋ก ์ธํด ๊ณต์ฆ ์์ด๋ ์ฑ๊ณต ํฉ๋๋ค. ์ฐ๋ ค๋ ๊ฒฝ๊ณ ๊ฐ ๋ฏธ๋์ ์คํจ๋ฅผ ๋ํ๋ ๋๋ค.
๋๊ตฐ๊ฐ XCode๋ฅผ ์ฌ์ฉํ ๋ @davideby ๊ฐ ์ธ๊ธํ JSON ๋ก๊ทธ๋ฅผ ์ฐพ์ ์ ์๋ ์์น๋ฅผ ์๋ ค์ค๋ค๋ฉด XCode๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๋ฆฌ ์ํํธ์จ์ด์ ๋ ๋ค๋ฅธ ๊ณต์ฆ์ ์ํํ๊ณ ๊ทธ๋ฌํ ๊ฒฝ๊ณ ๊ฐ ๋ํ๋๋์ง ํ์ธํ๊ฒ ์ต๋๋ค.
๊ณต์ฆ์ด ์ฑ๊ณตํ๋ค๋ ๊ฒ๋ง ์ ์ ์๋๋ฐ ์์ง ๋ก๊ทธ ํ์ผ์ ๊ฒฝ๊ณ ๊ฐ ์๋์ง ํ์ธํ์ง ์์์ต๋๋ค.
๋๋ ์ด ๋ฌธ์ ์์ ์ผํ๊ณ ์๋ค. ํนํ "์์ฒญ ์ํ ํ์ธ" ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
@gdams hardenend ๋ฐํ์ ์ง์์ด ๋ค์ ์ฌ๋ผ์ง ๊ฒ ๊ฐ์ต๋๊น? jdk-11.0.4+11.4๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณต์ฆ์ด ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ jdk-11.0.5+10์ ์ฌ์ฉํ๋ฉด ๊ฐํ๋ ๋ฐํ์ ์ง์์ด ํ์ฑํ๋์ง ์๋๋ค๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ฐํ๋ ๋ฐํ์ ์ต์
์์ด ์คํ ํ์ผ์ ์๋ช
ํ ๊ฒ ๊ฐ์ต๋๋ค. ํ๋ ค๊ณ ๋
ธ๋ ฅํ๋ค
์ฝ๋ ์ค๊ณ ๋ช
๋ น์ --option runtime
๋ฅผ ์ถ๊ฐํ์ญ์์ค.
2019๋ 11์ 5์ผ ํ์์ผ 07:56 David Eby ์๋ฆผ @github.com ์์ฑ:
์๋ ์ฌ๋ฌ๋ถ,
์ด๊ฒ์ด ์์ ํ ๋ซํ ์๋์ง ํ์คํ์ง ์์ต๋๋ค. ์ต์ macOS๋ฅผ ๋ฒ๋ค๋ก ์ ๊ณตํฉ๋๋ค
OpenJDK 11 JRE(OpenJDK11U-jre_x64_mac_hotspot_11.0.5_10.tar.gz)
๊ณต์ฆ ํ๋ก์ธ์ค๊ฐ ์ฑ๊ณตํ๋ ๋์
(์๋ง๋) ์คํจํ ๊ฒ์์ ๋ํ๋ด๋ JSON ๋ก๊ทธ์ ๊ฒฝ๊ณ
๋ฏธ๋. ์๋ฅผ ๋ค์ด:{
"์ฌ๊ฐ๋": "๊ฒฝ๊ณ ",
"์ฝ๋": null,
"๊ฒฝ๋ก": "XYZ.app.zip/XYZ.app/Contents/jdk-11/bin/java",
"message": "์คํ ํ์ผ์ ๊ฐํ๋ ๋ฐํ์์ด ํ์ฑํ๋์ด ์์ง ์์ต๋๋ค.",
"docUrl": null,
"์ํคํ ์ฒ": "x86_64"
},๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ณด๊ณ ํ ์ฑ๊ณต์ ์ธ ๊ณต์ฆ์ด ๊ธฐํ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
Apple์ ์ผ์์ ์ผ๋ก ๊ณต์ฆ ์๊ตฌ ์ฌํญ ์ํ
https://developer.apple.com/news/?id=09032019a ~ 2020๋ 1์.๋์์ด ๋๋ ๊ฒฝ์ฐ ๋ก๊ทธ ์ฌ๋ณธ์ ์ ๋ฌํ ์ ์์ต๋๋ค.
โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/AdoptOpenJDK/openjdk-build/issues/1130?email_source=notifications&email_token=ALFWETDWY6UNPTKTOAOHGFLQSEDKHA5CNFSM4H3I6DJ2YY3PNVWWK3TUL52HS4DFVEXG43VM
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/ALFWETGV56Q5HXDOMCPKBKTQSEDKHANCNFSM4H3I6DJQ
.
Apple์ด ์
๋ฐ์ดํธ๋ฅผ ์ถ์ํ์ต๋๋ค: https://developer.apple.com/news/?id=12232019a
OS X 10.15์์ JDK8์ ์ฌ์ฉํ๋ฉด 2์ 3์ผ(4์ฃผ ํ)๋ถํฐ ์์ ํ ์คํจํ๊ธฐ ์์ํ๋ค๋ ๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๊ณ ์์ต๋๊น?
๊ฝค ๋์ ํ
๋ฐ..
Apple์ด ์ ๋ฐ์ดํธ๋ฅผ ์ถ์ํ์ต๋๋ค: https://developer.apple.com/news/?id=12232019a
OS X 10.15์์ JDK8์ ์ฌ์ฉํ๋ฉด 2์ 3์ผ(4์ฃผ ํ)๋ถํฐ ์์ ํ ์คํจํ๊ธฐ ์์ํ๋ค๋ ๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๊ณ ์์ต๋๊น?
๊ฝค ๋์ ํ ๋ฐ..
์๋์, ๊ทธ๋ ๊ฒ ๋ ์ผ์ ์๋๋๋ค. ๊ทธ๊ฒ์ ๋์ ์ผ์ด์ง๋ง ์ง๊ธ ์๋ํ๋ ๊ฒ๋ค์ ๊ณ์ ์๋ํ ๊ฒ์ ๋๋ค. ๊ณต์ฆ์ ์ํด ์ฑ์ ์ ์ถํ๋ ค๋ฉด ์ฌ๋ฌ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํด์ผ ํฉ๋๋ค. ๊ทธ ์ค ํ๋๋ ์ฝ๋ ์๋ช ์ด๊ณ ๋ค๋ฅธ ํ๋๋ ๋ฐํ์ ๊ฐํ์ ๋๋ค. ์ธํฐ๋ท์์ ๋ค์ด๋ก๋ํ ์ฑ์ Catalina(10.15)์ ์ค์นํ๋ ค๋ฉด ๊ณต์ฆ์ด ์ ๋๋ก ๋์๋์ง ๊ฒ์ดํธํคํผ ๊ฒ์ฌ๋ฅผ ํต๊ณผํด์ผ ํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ฐ๋ก ์ง๊ธ Catalina์์ ๋ฐ์ํฉ๋๋ค.
2003๋ 2์ 3์ผ์ ๋ฐ์ํ๋ ์ผ์ ์ฝ๋ ์๋ช ๋ฐ ๋ฐํ์ ๊ฐํ์ ๊ด๋ จํ์ฌ ๊ธฐ์ค์ ์ถฉ์กฑํ์ง ๋ชปํ๋ฉด Apple์์ ์ฑ์ ๊ณต์ฆํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
Apple์ ํ์ฌ ์ ์ ๊ธฐ๊ฐ ์ค์ด๋ฏ๋ก ๋ฌด์์ด๋ ์ ์ถํ ์ ์์ผ๋ฉฐ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ์ง ๋ชปํ๋๋ผ๋ ๊ณต์ฆํ ๊ฒ์ ๋๋ค. 2์ 3์ผ ์ดํ์๋ ์ฑ ๊ณต์ฆ์ ๋ฐ์ ์ ์์ผ๋ฏ๋ก ํต๊ณผํ์ง ์์ผ๋ฉด ์ ์ฑ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ๋ฌผ๋ก 7์์ ์ ํ์ 9์์ด ๋ ๊ฒ์ด๋ผ๊ณ ๋งํ๋ค. 9์์๋ 1์์ด๋ผ๊ณ ํ๊ณ , 12์์๋ 2์์ด๋ผ๊ณ ํ์ต๋๋ค. ๊ทธ๋์ ๊ทธ๋ค์ ์ํฉ์ด ์ณ์ง ์๋ค๋ ๊ฒ์ ์ธ์ํ๊ณ ์์ผ๋ฉฐ ๊ทธ๋ ๊ฒ ํจ์ผ๋ก์จ ๋ง์ ์ฌ๋๋ค์๊ฒ ํผํด๋ฅผ ์ค ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ณ ๊ฐ์๊ฒ ๊ด๋ฆฌ์ ์ก์ธ์ค ๊ถํ์ด ์๋ ๊ฒฝ์ฐ ์ ์ดํ์ผ๋ก ์ด๋ํ์ฌ ์ฑ์ ์ธ์ฆํ์ฌ ๊ณต์ฆ๋์ง ์์ ๋ชจ๋ ํญ๋ชฉ์ ์ค์นํ๋๋ก ํ์ฉํ ์ ์์ต๋๋ค.
๋ฐํ์ ๊ฐํ๋ก ์ด๋ ค์์ ๊ฒช๊ณ ์๋ ์ฌ๋๋ค์ ์ํด ์ฌ์ฉ ๊ฐ๋ฅํ 6๊ฐ์ง plist ์ธํ์ดํ๋จผํธ๋ฅผ ๋ชจ๋ ์ถ๊ฐํ๊ณ ์ฌ์ฉ ์ค์ธ Java ๋ฐํ์์ด -deep ์ต์ (MacOS์ ์์)์ ์ฌ์ฉํ ๋ ๊ณต๋ ์ค๊ณ๋๋ ํด๋์ ์๋์ง ํ์ธํ์ญ์์ค. , ๋๋ ํ๋ ์์ํฌ). JRE๋ฅผ ํ๋ฌ๊ทธ์ธ์ ๋ฃ์ ๊ฒฝ์ฐ ํ์ฌ์์ ๊ณต๋ ์ค๊ณํ ๊ฒ์ผ๋ก ๊ฐ์ ํ๊ณ ํด๋น ์์น๋ฅผ ์ฝ๋ ์ค๊ณํ๊ฑฐ๋ ๊ฐํํ์ง ์์ต๋๋ค. MacOS ๋ฐ Frameworks ์ด์ธ์ ๋ค๋ฅธ ์์น์์๋ ์ฝ๋ ์ค๊ณ๊ฐ ๋ฌด์ํฉ๋๋ค.
์ง์ ์๋ช ํด๋ ์๋ํ์ง ์์ ์๋ ์์ง๋ง ์ธ๋ถ์ ๋๊ตฐ๊ฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ ์ ํ์ ๊ณต์ฆ ๊ฒฝ๊ณ (์ค๋ฅ๊ฐ ๋๊ณ 2์ 3์ผ ์ดํ์ ๋ชจ๋ ๊ณต์ฆ์ ์ฐจ๋จํจ)๋ฅผ ์ด๋ป๊ฒ ๊ณ ์น ์ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
"severity": "warning",
"code": null,
"path": "mydmg.dmg/MyApp.app/Contents/Helpers/jre_1.8.0_XX.jre/Contents/Home/lib/libzip.dylib",
"message": "The binary uses an SDK older than the 10.9 SDK.",
"docUrl": null,
"architecture": "x86_64"
https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution/resolveing_common_notarization_issues ์ ๋ฐ๋ฅด๋ฉด ์ด๋ ์์๋๋ ์ผ์ด๋ฉฐ ์ฐ์ ์๋ก์ด ๋ฒ์ ์ผ๋ก ๋ฐ์ด๋๋ฆฌ๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
2์ 3์ผ๋ถํฐ OS X 10.15+์ฉ ์ํํธ์จ์ด ์ ๋ฐ์ดํธ ๋ฆด๋ฆฌ์ค๋ฅผ ์ค๋จํ ์๋ ์์ง๋ง ํ์ฌ ์ํฉ์ ๊ทธ๋๋ก์ผ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ์ ํ๊ฒฝ์ ์ผ๋ถ ๋ณด์ ๋ฉ์ปค๋์ฆ์ ๋นํ์ฑํํด์ผ ํ๋ค๊ณ ๋งํ๋ ๊ฒ์ ์ข ์ข ๋ถ๊ฐ๋ฅํ๋ฉฐ ์ ๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ์๋ค์ผ ์ ์๋ ๊ธธ..
OS X 10.15+์ฉ ์ํํธ์จ์ด ์ ๋ฐ์ดํธ ๋ฆด๋ฆฌ์ค๋ฅผ ์ค๋จํ ์ ์์ต๋๋ค.
FWIW ์ฐ๋ฆฌ์ ์๋ฃจ์ ์ https://github.com/stooke/jdk8u-xcode10 ์ ํตํด ์ต์ SDK๋ก ์ง์ ๊ตฌ์ถํ๋ ๊ฒ์ด์์ต๋๋ค.
์ด์ ๋ถํฐ ๋ชจ๋ ๊ณต์ฆ ๊ฒฝ๊ณ ๊ฐ ๋ง์นจ๋ด ์ค๋ฅ๋ก ๋ณํ ๊ฒ ๊ฐ์ต๋๋ค. ์ฆ, ๋ ์ด์ Java ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณต์ฆํ ์ ์์ต๋๋ค.
์๋ ์ฌ๋ฌ๋ถ. ๋ด ์ฐ๊ฒฐ๋ ๋ฌธ์ ๊ฐ ์ด ๋ฌธ์ ๋ฅผ ์ฐธ์กฐํ์ฌ ์ข ๋ฃ๋์์ผ๋ฏ๋ก ์ฌ๊ธฐ์์ ๋ด ๋ฌธ์ ๋ฅผ ๋ค์ ์ธ๊ธํ๊ณ ์ถ์ต๋๋ค. ๋๋ ์ฌ์ ํ ๋๊ตฐ๊ฐ๊ฐ ๊ณ ์น ๋ฐฉ๋ฒ์ ๋ํ ํ๋ฅญํ ํํธ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ฐ๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ jar ํ์ผ์ ํฌํจ๋์ด ์์ต๋๋ค. ์ด jar ํ์ผ์ ๋์ค์ packagesbuild ๋ช ๋ น(http://s.sudre.free.fr/Software/Packages/about.html)์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ํจํค์ง์ ๋ฒ๋ค๋ฉ๋๋ค. ์ด ๋ฒ๋ค์ AdoptOpenJDK JRE 11.0.4๋ ํฌํจํฉ๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํญ์ ํ์๋ก ์์๋์๋์ง ํ์ธํ๊ธฐ ์ํด ์ด ๋ฒ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํจ๊ป ์ ๊ณตํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋์ ์๋ช ํฉ๋๋ค.
# signing the main application
codesign --deep --force --timestamp --strict --entitlements "${ENTITLEMENTS_DIR}" \
--options runtime --sign "${CERT_DEV_ID_APPLICATION}" "${DIR_TO_OUR_APP_JAR}"
# signing the java binaries
find ${DIR_TO_JRE} -type f -exec \
codesign --deep --force --timestamp --strict --entitlements "${ENTITLEMENTS_DIR}" \
--options runtime --sign "${CERT_DEV_ID_APPLICATION}" '{}' \;
๋ฌผ๋ก 6๊ฐ์ง ๊ถํ์ด ๋ชจ๋ ์์ผ๋ฉฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ค์นํ ํ์๋ ๋ณผ ์ ์์ต๋๋ค.
๊ฐํ๋ ๋ฐํ์์ด ํ์ฑํ๋ ๋๊น์ง ๋ชจ๋ ๊ฒ์ด ์ ์๋ํฉ๋๋ค. ๊ณต์ฆ์ ํต๊ณผํ์ง๋ง ์ ๊ณต๋ Java ๋ฒ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋งํ๋ค
VM์ ์ด๊ธฐํํ๋ ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. CodeHeap 'non-nmethods'์์ ์ถฉ๋ถํ ๊ณต๊ฐ์ ์์ฝํ ์ ์์ต๋๋ค(2496K).
์ฌ์ ์ค์น๋ Java ๋ฒ์ ์ผ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ํ๋ฉด ์ ๋๋ก ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์ ๋ถํฐ ๋ชจ๋ ๊ณต์ฆ ๊ฒฝ๊ณ ๊ฐ ๋ง์นจ๋ด ์ค๋ฅ๋ก ๋ณํ ๊ฒ ๊ฐ์ต๋๋ค. ์ฆ, ๋ ์ด์ Java ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณต์ฆํ ์ ์์ต๋๋ค.
์ด์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ค๋์ ๊ด์ฐฎ์ต๋๋ค. ์ด์ Apple์ Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ช ๋์ง ์๊ณ ์ค๋ฅ๊ฐ ์๋ค๊ณ ๋ณด๊ณ ํ์ต๋๋ค. ์ค๋, ๊ทธ๋ค์ ์๋ช ๋์ง ์์์ง๋ง ๊ฒฝ๊ณ ๋ก๋ณด๊ณ ๋์์ต๋๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก, Apple์ ๋ด ํจํค์ง๋ฅผ ๊ณต์ฆํ์ต๋๋ค.
์ด์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ค๋์ ๊ด์ฐฎ์ต๋๋ค.
๋๋ ์ด๊ฒ์ ๋ณด์๊ณ , ์๋ง๋ Apple์ด 2์ 3์ผ์ ์ํ๋ ์์ ์ธ ๋ ์๊ฒฉํ ๊ท์น์ ๋ฐ๋ผ ํ์ด์ด๋ฅผ ๊ฑท์ด์ฐจ๊ณ ์์์ ๊ฒ์ ๋๋ค.
jdk-13.0.1+9
๋ก ๊ณต์ฆ์ ์๋ํ๋ฉด .jmod
ํ์ผ์ ํ์ผ์ด Apple์ ๊ณต์ฆ ์๋น์ค์์ ์๋ช
๋์ง ์์ ๊ฒ์ผ๋ก ๊ฐ์ง๋ฉ๋๋ค. ์:
{
"severity": "warning",
"code": null,
"path": "[...]/Contents/Home/jmods/jdk.jartool.jmod/bin/jarsigner",
"message": "The binary is not signed.",
"docUrl": null,
"architecture": "x86_64"
},
jmod ์๋ช ์ด 8์ 21์ผ https://github.com/AdoptOpenJDK/openjdk-build/commit/5cd5306b4e97437aa2129dffd7e83e2f7cfd9255#diff -9a6d9f1628b9075aa83e1์์ ์ ๊ฑฐ๋์์์ ํ์ธํ์ต๋๋ค. ์ธ๊ธ๋ ํฐ์ผ https://github.com/AdoptOpenJDK/TSC/issues/107 ์ด ์ข ๋ฃ๋์์ต๋๋ค. ๋ค์ ๊ฐ์ ธ์ฌ ๊ณํ์ด ์์ต๋๊น?
VM์ ์ด๊ธฐํํ๋ ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. CodeHeap 'non-nmethods'์์ ์ถฉ๋ถํ ๊ณต๊ฐ์ ์์ฝํ ์ ์์ต๋๋ค(2496K).
์ด๊ฒ์ ๋ค์ ํ ๋ฒ ์ดํด๋ณธ ํ ๋ฌธ์ ๊ฐ ์ฐ๋ฆฌ ์คํฌ๋ฆฝํธ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ญ์ฌ์ ์ผ๋ก ์ฑ์ฅํ์ฌ JRE์ ์ถ๊ฐ๋ก ์๋ช ํ์ต๋๋ค. ์ด์ JRE์ ์ฐพ๊ธฐ ๊ธฐํธ ๋ถ๋ถ์ ์ ๊ฑฐํ๊ธฐ๋ง ํ๋ฉด ์ ๋๋ก ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
@abauman-7signal์ด ์ธ๊ธํ๋ฏ์ด ์ค์ ๋ก ๋ชจ๋ ์ค๋ฅ๋ ์ด์ ๋ค์ ๊ฒฝ๊ณ ์
๋๋ค. ์๋ง๋ 2์ 3์ผ๊น์ง์ผ ๊ฒ์
๋๋ค.
OpenJDK 13์ ๊ณต์ฆํ๊ณ ๋์ค์ ์ค์ ๋ก ์๋ํ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น?
์ง๊ธ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ์ข์ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? macOS 10.15.2 ๋ฐ openjdk8 ์ฌ์ฉ ์๋
ํ์ฌ ์ํ๋ฅผ ์์ฝํ๋ ค๊ณ ํฉ๋๋ค. ์ ๋ ์ด ๋ถ์ผ์ ์ ๋ฌธ๊ฐ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์์ฝ์ ์ค๋ฅ๊ฐ ์์ ์ ์์ต๋๋ค. @gdams ๋ AdoptOpenJDK๋ฅผ ๊ณต์ฆํ๊ณ ๊ฐํ๋ ๋ฐํ์ ์ง์์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ ธ๋ ฅ์ ์ฃผ๋ํ๊ณ ์์ง๋ง ์๋ฃํ๋๋ผ ๋ฐ์ฉ๋๋ค. ๊ทธ๋์ ์๊ธ ํ ์๊ณผ ํจ๊ป ์ญ์ทจํ์ญ์์ค ...
HotSpot์ด ํฌํจ๋ JDK 11 ์์ ์ ๊ณง OpenJ9๊ฐ ํฌํจ๋ JDK 11์์ ์๋ฃ๋์์ต๋๋ค. JDK ๋ฒ๋ค๋ง์ ๋ฌธ์ ์์ด ์๋ํด์ผ ํฉ๋๋ค. ์ด ์์ ์ ๊ฒฐ๊ณผ๋ ๋ค์ ๋ถ๊ธฐ CPU(2020๋ 4์)์ ํฌํจ๋ ์์ ์ ๋๋ค. ์์ ํ ๊ณต์ฆ๊ณผ ๊ฐํ๋ ๋ฐํ์ ์ง์์ผ๋ก ๋ ๋นจ๋ฆฌ ์ฌ์ฉํ ์ ์๋ 11.0.6์ ์ฌ๊ตฌ์ถ์ด ์๋์ง ์ฌ๋ถ๋ ์์ง ๊ฒฐ์ ๋์ง ์์์ต๋๋ค. ๊ธฐ์กด ๋ฐ์ด๋๋ฆฌ๋ ์ด๋ฏธ ๊ณต์ฆ๋์์ผ๋ฉฐ ๋ฌธ์ ์์ด 2์ 3์ผ ์ดํ์๋ ๊ณ์ ์คํ๋์ด์ผ ํฉ๋๋ค.
$ codesign -dvv ~/Downloads/jdk-11.0.6+10/Contents/Home/bin/java
Executable=/Users/andreas/Downloads/jdk-11.0.6+10/Contents/Home/bin/java
Identifier=net.java.openjdk.cmd
Format=Mach-O thin (x86_64)
CodeDirectory v=20200 size=276 flags=0x0(none) hashes=4+2 location=embedded
Signature size=9038
Authority=Developer ID Application: London Jamocha Community CIC (VDX7B37674)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=15 Jan 2020 at 13:14:22
Info.plist entries=4
TeamIdentifier=VDX7B37674
Sealed Resources=none
Internal requirements count=1 size=180
JDK 8 ์ ์์ง ์งํ ์ค์ด๋ฉฐ ETA๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ฃผ์ ๋ฌธ์ ๋ JDK 8์ด ๊ณต์ฆ ๋ฐ ๊ฐํ๋ ๋ฐํ์์ ์ง์ํ์ง ์๋ ์ด์ Xcode๋ก๋ง ๋น๋๋ฅผ ์ง์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ต์ Xcode ๋ฒ์ ์ ์ฌ์ฉํ๋ ค๋ ๋ ธ๋ ฅ์ด ์งํ ์ค์ด์ง๋ง ๊ฒฐ๊ณผ ๋ฐ์ด๋๋ฆฌ๋ ์์ง ํ ์คํธ ์ค์ํธ๋ฅผ ํต๊ณผํ์ง ๋ชปํ์ต๋๋ค. @gdams ๋ Apple๊ณผ ํจ๊ป ๊ฒํ ํ๊ณ ์์ต๋๋ค. ๊ธฐ์กด ์คํ ํ์ผ์ ๊ณต์ฆ๋์์ผ๋ฉฐ 2์ 3์ผ ์ดํ์๋ ๊ณ์ ์คํ๋์ด์ผ ํฉ๋๋ค.
$ codesign -dvv ~/Downloads/jdk8u242-b08/Contents/Home/bin/java
Executable=/Users/andreas/Downloads/jdk8u242-b08/Contents/Home/bin/java
Identifier=net.java.openjdk.cmd
Format=Mach-O thin (x86_64)
CodeDirectory v=20200 size=884 flags=0x0(none) hashes=23+2 location=embedded
Library validation warning=OS X SDK version before 10.9 does not support Library Validation
Signature size=9038
Authority=Developer ID Application: London Jamocha Community CIC (VDX7B37674)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=19 Jan 2020 at 16:38:24
Info.plist entries=4
TeamIdentifier=VDX7B37674
Sealed Resources=none
Internal requirements count=1 size=180
3์์ ์ถ์๋ JDK 14๋ JDK 11๊ณผ ๋์ผํ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค. ๊ณต์ฆ ๋ฐ ๊ฐํ๋ ๋ฐํ์ ์ง์์ด ํฌํจ๋ JDK 14์ Nightly ๋น๋๊ฐ ๊ณง ์ ๊ณต๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ํด์๋ ์ต์ํ https://github.com/AdoptOpenJDK/openjdk-build/pull/1517 ์ด ํ์ํฉ๋๋ค.
๋ค๋ฅธ ๋ชจ๋ JDK(9, 10, 12, 13)๋ ์๋ช ์ด ๋คํ์ฌ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฌ์ต๋๋ค.
์ด ์ ๋ฐ์ดํธ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ ธ๋ ฅ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ 11.0.6์ ๋ค์ ๋น๋ํ ์ ์๋๋ก ํ์ญ์์ค. ํ์ฌ๋ก์๋ ์๋ฒ ๋๋ Java ๋ฐํ์์ด ํฌํจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ถ์ํ๋ ์ฐ๋ฆฌ์ ๊ฐ์ ๊ฐ๋ฐ์๋ 2์ 3์ผ ์ดํ 2๊ฐ์ ํ 11.0.7์ด ๋ฆด๋ฆฌ์ค๋ ๋๊น์ง Catalina์์ ์๋ํ๋ ์ ๋น๋๋ฅผ ์ถ์ํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. (์ ๊ฑฐ๋๊ธฐ ์ ์ 11.0.4+11.2๋ฅผ ๊ฐ์ ธ์ค์ง ์๋ ํ ์ฐ๋ฆฌ๋ ๊ทธ๋ ๊ฒ ํ์ต๋๋ค.)
๋์์ด ๋๋ค๋ฉด ๋ณด๋ค ์ผ๋ฐ์ ์ธ ๋ฆด๋ฆฌ์ค ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๋น๋ ๋ฐ ๊ณต์ฆ ์์คํ ์ผ๋ก ํ ์คํธํด ๋ณด๊ฒ ์ต๋๋ค.
๋์์ด ๋๋ค๋ฉด ๋ณด๋ค ์ผ๋ฐ์ ์ธ ๋ฆด๋ฆฌ์ค ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๋น๋ ๋ฐ ๊ณต์ฆ ์์คํ ์ผ๋ก ํ ์คํธํด ๋ณด๊ฒ ์ต๋๋ค.
@mdgood ์ด๋ฏธ ์ต์ ์ ๋ฐ์ดํธ๋ ๊ณต์ฆ ์ ๋ฐ์ดํธ๊ฐ ์๋ JDK11์ ์ผ๊ฐ ๋น๋ ์ค ํ๋๋ฅผ ์ป์ ์ ์์ต๋๋ค. https://ci.adoptopenjdk.net/job/build-scripts/job/jobs/job/jdk11u/job/jdk11u-mac-x64-hotspot์ ์ฐธ์กฐํ์ญ์์ค.
์ด๋ป๊ฒ ์ง๋ด๋์ง ๋ณด๊ณ ์ถ์ต๋๋ค. ์๋ ค ์ค์!
@gdams ํฌ์ธํฐ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ข์ ์์์ ๋๋ค! ์ด๊ฒ์ ์ก์์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํ๊ฒ ์ต๋๋ค.
3์์ ์ถ์๋ JDK 14๋ JDK 11๊ณผ ๋์ผํ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค. ๊ณต์ฆ ๋ฐ ๊ฐํ๋ ๋ฐํ์ ์ง์์ด ํฌํจ๋ JDK 14์ Nightly ๋น๋๊ฐ ๊ณง ์ ๊ณต๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ํด์๋ ์ต์ํ #1517์ด ํ์ํฉ๋๋ค.
๋ค๋ฅธ ๋ชจ๋ JDK(9, 10, 12, 13)๋ ์๋ช ์ด ๋คํ์ฌ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฌ์ต๋๋ค.
JDK 13์ ์๋ช ์ด ์ข ๋ฃ ๋์ง ์์์ต๋๋ค . JDK 14๊ฐ 3์์ ๋ฆด๋ฆฌ์ค๋ ๋๋ง ์๋ช ์ด ์ข ๋ฃ๋ฉ๋๋ค. ์ต์ JDK์ ๊ณต์ฆ๋ ๋น๋๋ฅผ ๊ฐ์ง ์ ์๋๋ก ๊ณต์ฆ๋ JDK 13์ ๋ค๋ฅธ ๋น๋๋ฅผ ์ฌ๊ณ ํ๊ณ ๋ฐํํ์ญ์์ค.
@gadams 11.0.7 ์ 1์ 30์ผ ์ผ๊ฐ ๋น๋๊ฐ ์ ๋๋ก ์๋ํ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์ ๋น๋๋ ๊ฒฝ๊ณ ์์ด ๊ณต์ฆ๋์์ผ๋ฉฐ Catalina์์ ์ ์ค์น๋๊ณ ์๋ํฉ๋๋ค. ๋ค์ ์ฃผ์ ์๋ก์ด ์ ํ ์ฌํญ์ด ์ ์ฉ๋ ํ ๋ค์ ํ์ธํ๊ธฐ ์ํด ์ ์ฒญ์๋ฅผ ์์ฑํ๊ณ ๊ณต์ฆํ๋ ค๊ณ ํฉ๋๋ค.
๊ตฌ์ถ ๋ฐ ๊ณต์ฆ์ ์ด์ ๋ ์ ์๋ํ์ต๋๋ค.
2020-02-06 06:01:30 +0000 ํ์ฌ ๋ค์๊ณผ ๊ฐ์ ๊ณต์ฆ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ฌ๊ฐ๋ | "์ค๋ฅ"
๊ฒฝ๋ก | "..../Contents/Plugins/Java.Runtime/Contents/Home/jre/bin/java"
๋ฉ์์ง | "๋ฐ์ด๋๋ฆฌ๋ 10.9 SDK๋ณด๋ค ์ค๋๋ SDK๋ฅผ ์ฌ์ฉํฉ๋๋ค."
๊ฑด์ถ | "x86_64"
๋ฐ๋ผ์ ๊ฐ๊น์ด ์์ผ ๋ด์ ๋์ผํ ๋ฌธ์ ๋ฅผ ๋ณด๊ฒ ๋ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
10.9 ์ด์์ ๋ํด ๋น๋๋ Java 8 JRE์ ๋ํ ์งํ ์ํฉ์ด๋ ์ผ์ ์ด ์์ต๋๊น? RMI ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์ฌ์ ํ Java 8๊ณผ ๋ฒ๋คํด์ผ ํฉ๋๋ค.
๋ชจ๋ ์ ๋ณด๋ฅผ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ์ฌ์ ํ ์ค์ํ ์ฅ์ ๋ฌผ์ด ์๋ ๊ฒฝ์ฐ ์ด์ ์ ์ธ๊ธํ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
https://github.com/stooke/jdk8u-xcode10
๊ทธ๋ฌ๋ ์์ผ๋ก ๋ฉฐ์น ๋ด์ Java 8 JRE๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค๋ฉด ๋๋ ๊ทธ๊ฒ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ํจ์ฌ ์ ํธํ ๊ฒ์ ๋๋ค.
@addsomebass ์๋ฐํ ๊ฒ์ ์์ต๋๋ค. ์ ๊ธฐ์ต์ด ๋ง๋ค๋ฉด, ์ฐ๋ฆฌ ํ์ ์ค ํ ๋ช ์ด ๋น์ ์ด ์ฐ๊ฒฐํ๋ ํจ์น๋ฅผ ๊ฐ์ง๊ณ ๋์๊ณ ๊ฒฐ๊ณผ ๋ฐ์ด๋๋ฆฌ๋ ํ ์คํธ ์ค์ํธ๋ฅผ ํต๊ณผํ์ง ๋ชปํ์ต๋๋ค. ๋ฐ๋ผ์ ์๋ ค์ง ๊ฒฐํจ์ด ์๋ JDK๋ฅผ ๋ฒ๋ค๋ก ๋ฌถ์ต๋๋ค.
@addsomebass ์ ๋ @aahlenst๊ฐ ์ธ๊ธํ ํ ์คํธ ์คํจ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Apple๊ณผ ํ๋ ฅํ๊ณ ์์ต๋๋ค. https://github.com/stooke/jdk8u-xcode10 ์ ํจ์น๊ฐ ํ๋ก๋์ ์ค๋น๊ฐ ๋์ง ์์์ผ๋ฉฐ ํ ์คํธ์ ์คํจํ์์ ๋ฐ๋ณตํฉ๋๋ค.
ํ์ฌ ๋ชฉํ๋ ๊ณต์ฆ๋ jdk8 ๋ฐ์ด๋๋ฆฌ๋ฅผ ์๋ง๊น์ง ์ค๋นํ๋ ๊ฒ์ ๋๋ค.
@gdams ์ ๋ฐ์ดํธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ด์ ๋ํ ์์ ์ ์ ๋ง ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ง๋ง ๋ชจ๋ ์ฌ๋์ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
JDK14์ ์ต์ EA์์ jpackage๋ฅผ ์ฌ์ฉํ์ฌ .app ํ์ผ์ ๋น๋ํ๊ณ ์์ต๋๋ค. ํ์ผ์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
MyApp.app/
Contents/
MacOS/ <- the launcher
Resources/
PkgInfo
Info.plist
app/ <- the libs for the app
runtime/ <- contents of jdk-11.0.7+2-jre
๋ฌธ์ ๋ ๋ค์ ์ค ํ๋๋ฅผ ์ํํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
ํ ๊ฐ์ง ์ ์ณ๋๊ณ - jpackage์์ Mac์ฉ ์๋ช ์ฑ์ด ํ์ฌ ์์ ๋์ด ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐํ์์ด ์๋ช ๋์ง ์์์ ๋ ์๋ํ์ง๋ง ์ด์ ๋ ๋ด๊ฐ ์ง์ ์๋ช ํด์ผ ํฉ๋๋ค.
๋ฐํ์(JRE)์ด ํตํฉ๋๋ ๋ฐฉ์๊ณผ ์๋ช ์๊ตฌ ์ฌํญ์ ๋ํด ์คํดํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋จผ์ ๋ฐํ์์ ์๊ณ ์คํ ํ๋ก๊ทธ๋จ์ด ์๋ ๋ชจ๋ ํ์ผ์ ์๋ช ํฉ๋๋ค.
% find my-app.app -type f -not -path "*/Contents/runtime/*" \
-not -path "*/Contents/MacOS/my-app" \
-not -path "*libapplauncher.dylib" \
-exec codesign -v -s "my key" --prefix com.myapp. --keychain /Users/myuser/Library/Keychains/codesigning.keychain {} \;
๋ฐํ์์ด ์ด๋ฏธ ์๋ช ๋์ด ์์ผ๋ฉด ๋ค์ ์๋ช ํ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์ด ์์ ์์ ๋ด ์ฑ์ด ์คํ๋ฉ๋๋ค. ํ์ง๋ง:
% spctl -a -t exec -vv my-app.app
my-app.app: code has no resources but signature indicates they must be present
์ด๊ฒ์ด ๋ฌด์์ ์๋ฏธํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์จ๋ผ์ธ์์ ์ฐพ์ ์ ์๋ ๊ฒ์ ์ฑ์ด ์์๋์์์ ์๋ฏธํ ์ ์๋ค๋ ๊ฒ๋ฟ์ ๋๋ค. ์งํ ์ค์ธ ์ ๋ณด๊ฐ ๋ง์ง ์์ต๋๋ค.
๊ทธ๋์ ๋๋ ์๋ํฉ๋๋ค :
% spctl -a -t exec -vv my-app.app/Contents/runtime
my-app.app/Contents/runtime: code has no resources but signature indicates they must be present
์ด๊ฒ์ด ๋ฌธ์ ์ ์์ธ์ด ๋ฐํ์์์ ์๋ฏธํ๋์ง ํ์คํ์ง ์์ต๋๋ค. ์๋ณธ JRE ์์ค์ ๋ํด ๋์ผํ ๊ฒ์ฌ๋ฅผ ์คํํ๋ฉด(jpackage๋ก ํจํค์ง๋๊ธฐ ์ ) ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค.
% codesign -vvv --deep --strict /path/to/jdk-11.0.7+2-jre
/path/to/jdk-11.0.7+2-jre: code has no resources but signature indicates they must be present
% codesign -dv --deep --strict /path/to/osx/jdk-11.0.7+2-jre
Executable=/path/to/jdk-11.0.7+2-jre/Contents/MacOS/libjli.dylib
Identifier=libjli
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20500 size=786 flags=0x10000(runtime) hashes=16+5 location=embedded
Signature size=9038
Timestamp=8 Feb 2020 at 19:20:05
Info.plist=not bound
TeamIdentifier=VDX7B37674
Runtime Version=10.14.0
Sealed Resources=none
Internal requirements count=1 size=168
์ด์ ์ฑ์ ์๋ช ํฉ๋๋ค.
codesign -f -s "my key" --options=runtime --prefix com.myapp. --keychain /Users/myuser/Library/Keychains/codesigning.keychain my-app.app
--options=runtime
๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด _์คํ ํ์ผ์ ๊ฐํ๋ ๋ฐํ์์ด ํ์ฑํ๋์ด ์์ง ์์ต๋๋ค_๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ค์ ํ์ธ:
% spctl -a -t exec -vv my-app.app
bliss-5.app: accepted
source=Developer ID
origin=Developer ID Application: D Gravell (366TU22RYQ)
๋ง์ธ! ๊ทธ๋ฌ๋ JRE๊ฐ ์๋ runtime
ํด๋์ ๋ํด ๋์ผํ ๊ฒ์ฌ๋ฅผ ์ํํ๋ฉด ์ฌ์ ํ ๋์ผํ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
์ด๊ฒ์ ๊ณต์ฆ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค:
"path": "my-app.dmg/my-app.app/Contents/runtime/Contents/MacOS/libjli.dylib",
"message": "The signature of the binary is invalid.",
๋ํ ์ฑ์ด ๋ ์ด์ ์คํ๋์ง ์์ต๋๋ค.
% my-app.app/Contents/MacOS/my-app
2020-02-12 14:39:08.685 bliss[2909:61940] /private/tmp/my-app.app/Contents/MacOS/libapplauncher.dylib not found.
๊ทธ๋์ ๋๋ ์ด ํ์ผ์ด ์๋ช
๋์ง ์์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๊ณ (๊ทธ๋์ spctl
๊ฐ ์ด๊ฒ์ ํ์ฉํ๋ ์ด์ ๋???) ๊ทธ๋์ ์๋ช
ํ์ต๋๋ค:
% codesign -f -s "My key" --options=runtime --prefix com.myapp. -vv --keychain /Users/gravelld/Library/Keychains/codesigning.keychain my-app.app/Contents/MacOS/libapplauncher.dylib
% codesign -vvv --deep --strict my-app/Contents/MacOS/libapplauncher.dylib
my-app.app/Contents/MacOS/libapplauncher.dylib: valid on disk
my-app.app/Contents/MacOS/libapplauncher.dylib: satisfies its Designated Requirement
๊ทธ๋ฐ ๋ค์ ์ฑ์ ๋ค์ ์๋ช ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์์ ์ค์ธ ํ์ผ์ ๋ํ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ฒ์๋ JRE ๋ฌธ์ ๋ก ์ธํด ์ฌ์ ํ ์คํ๋์ง ์์ต๋๋ค.
% my-app.app/Contents/MacOS/my-app
2020-02-12 14:45:51.846 my-app[2919:63060] Failed to find library.:/private/tmp/my-app.app/Contents/runtime/Contents/Home/lib/jli/libjli.dylib
2020-02-12 14:45:51.847 my-app[2919:63060] my-app:Failed to locate JLI_Launch
2020-02-12 14:45:51.847 my-app[2919:63060] my-app:Failed to launch JVM
์ด์ ๋ฐํ์์ ์๋ช ํ๋ฉด ๊ณต์ฆ ๋ฌธ์ ๋ ํด๊ฒฐํฉ๋๋ค.
% codesign -f -s "my key" --options=runtime --prefix com.myapp. -v --keychain /Users/gravelld/Library/Keychains/codesigning.keychain my-app.app/Contents/runtime/Contents/Home/lib/jli/libjli.dylib
my-app.app/Contents/runtime/: replacing existing signature
my-app.app/Contents/runtime/: signed bundle with Mach-O thin (x86_64) [com.oracle.java.com.myapp]
์ฑ์ด ๋ณ๊ฒฝ๋์์ผ๋ฏ๋ก ์ฑ์ ๋ค์ ์๋ช ํ์ญ์์ค. ์ด์ ์คํํ ๋ ์ด ์๋ฆ๋ค์์ ์ป์ต๋๋ค.
% my-app.app/Contents/MacOS/my-app
Error: dl failure on line 542
Error: failed /private/tmp/my-app.app/Contents/runtime/Contents/Home//lib/server/libjvm.dylib, because dlopen(/private/tmp/my-app.app/Contents/runtime/Contents/Home//lib/server/libjvm.dylib, 10): no suitable image found. Did find:
/private/tmp/my-app.app/Contents/runtime/Contents/Home//lib/server/libjvm.dylib: code signature in (/private/tmp/my-app.app/Contents/runtime/Contents/Home//lib/server/libjvm.dylib) not valid for use in process using Library Validation: mapping process and mapped file (non-platform) have different Team IDs
2020-02-12 14:53:03.153 my-app[2942:64467] my-app:Failed to launch JVM
๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ฌ์ ํ โโ๊ณต์ฆํ์ง ์์ต๋๋ค:
"path": "my-app.dmg/my-app.app/Contents/runtime/Contents/MacOS/libjli.dylib",
"message": "The signature of the binary is invalid.",
์ถฉ๋ถํ:
% codesign -vvv --deep --strict my-app.app/Contents/runtime/Contents/MacOS/libjli.dylib
my-app.app/Contents/runtime/Contents/MacOS/libjli.dylib: a sealed resource is missing or invalid
file modified: /private/tmp/my-app.app/Contents/runtime/Contents/Home/lib/jli/libjli.dylib
์ - ๊ธฐ์ตํฉ๋๋ค runtime/Contents/Home/lib/jli/libjli.dylib
์ ์๋ช
ํ๊ธฐ ๋๋ฌธ์ runtime
๋ฒ๋ค์ ๋ค์ ์๋ช
ํ ๋ค์ ๋ฉํ ์ฑ ๋ฒ๋ค์ ์๋ช
ํด์ผ ํฉ๋๋ค.
๊ทธ๋์ ๋ด ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์๋ !
JDK 14, jpackage ๋ฐ ๋ชจ๋ dylib ๋ฐ jar์ ์ง์ ์๋ช ํ์ฌ ์คํํ ์ ์์์ต๋๋ค. ์๊ฒฉ ํ์ผ์์ ์ด ์ค์ ์ค์ ํ์ต๋๊น?
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
๋ฐํ์์ ๋ํ ๊ถํ์ ๋๊น ์๋๋ฉด ๋ฐํ์์ ๋ฒ๋ค๋ก ์ ๊ณตํ๋ ์ฑ์ ๋ํ ๊ถํ์ ๋๊น?
์๋ฅผ ๋ค์ด dmg๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ชจ๋ ํ์ผ(dylib, jar, .app)์๋ ์ฌ์ฉํ์ต๋๋ค.
codesign --timestamp --entitlements src/main/deploy/package/macosx/MyApp.entitlements --options runtime --deep -vvv -f --sign "Developer ID Application: John Public (XXXXXXXXXX)" MyApp-1.0.dmg
@dg76 ๊ฐ์ฌํฉ๋๋ค - ์๋ํด๋ณด๊ฒ ์ต๋๋ค. ์ง๊ธ๊น์ง ์๊ฒฉ์ ์์ฑํ์ง ์์์ง๋ง 2์ 3์ผ ์ดํ๋ก ๋ชจ๋ ๊ฒ์ด ๋ง๊ฐ์ง ๊ฒ ๊ฐ์ต๋๋ค. ์ด์ ์๋ ํ์ฉ๋๋ ๊ธฐ๋ณธ๊ฐ์ ์์กดํ๊ณ ์์์ ์๋ ์์ง๋ง ์ง๊ธ์ ๊ทธ๋ ์ง ์์ต๋๋ค.
์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค! ๋ฐ๋ผ์ ์ต์ข ์๋ฃจ์ ์ ๋ฌธ์ํํ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
% security unlock-keychain -p passwordhere codesigning.keychain
% find my-app.app -type f \
-not -path "*/Contents/runtime/*" \
-not -path "*/Contents/MacOS/my-app" \
-not -path "*libapplauncher.dylib" \
-exec codesign --timestamp --entitlements /tmp/bliss.entitlements -s "XXX" --prefix com.myapp. --options runtime -v --keychain /path/to/codesigning.keychain {} \;
% find my-app.app/Contents/runtime -type f \
-not -path "*/legal/*" \
-not -path "*/man/*" \
-exec codesign -f --timestamp --entitlements /tmp/bliss.entitlements -s "XXX" --prefix com.myapp. --options runtime -v --keychain /path/to/codesigning.keychain {} \;
% codesign -f --timestamp --entitlements /tmp/bliss.entitlements -s "XXX" --prefix com.myapp. --options runtime -v --keychain /path/to/codesigning.keychain my-app.app/Contents/runtime
% codesign -f --timestamp --entitlements /tmp/bliss.entitlements -s "XXX" --prefix com.myapp. --options runtime -v --keychain /path/to/codesigning.keychain my-app.app
๋ชจ๋ ํ ์คํธ ์๋:
% codesign -vvv --deep --strict my-app.app/Contents/runtime
my-app.app/Contents/runtime: valid on disk
my-app.app/Contents/runtime: satisfies its Designated Requirement
% codesign -vvv --deep --strict my-app.app/
--prepared:/private/tmp/my-app.app/Contents/MacOS/libapplauncher.dylib
--validated:/private/tmp/my-app.app/Contents/MacOS/libapplauncher.dylib
my-app.app/: valid on disk
my-app.app/: satisfies its Designated Requirement
% spctl -a -t exec -vv my-app.app
my-app.app: accepted
source=Developer ID
origin=XXX
์คํ๋๋์?
% my-app.app/Contents/MacOS/my-app
๋ค!
๊ณต์ฆํฉ๋๊น?
Status: success
Status Code: 0
Status Message: Package Approved
๋ง์ธ!
JRE ๋ฒ๋ค์ ๋ํ ์์ฝ:
jpackage
์ง๊ธ ์๋ช
์ด ๊นจ์ก์ต๋๋ค. ๊ณต์ฆ์ ๋ฐ์ผ๋ ค๋ฉด-f
๋ฅผ ์ฌ์ฉํ์ฌ ์๋ช
์ ๊ฐ์ ์คํํฉ๋๋ค.์๋ ํ์ธ์, ํ์ฌ Java 8 ๋๋ Java 9์ฉ Mac ๋น๋๊ฐ ์๋์ง ์ฌ์ญค๋ด๋ ๋ ๊น์? ๊ทธ๋ฌ๋ฉด ์ ๊ท์น์ ๋ฐ๋ผ ๊ณต์ฆ์ ๋ฐ์ ์ ์๋์?
@ijabz ๊ทํ์ ์ง๋ฌธ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๊ณ ์๋ค๋ฉด ์์ฉ ํ๋ก๊ทธ๋จ ๋ด์์ jvm์ ๋ฌถ๊ณ ๊ณต์ฆํ๊ณ ์ถ์ต๋๋ค. ํ์ฌ๋ก์๋ ํ ์ ์์ต๋๋ค. ์ต์ AdoptOpenJDK ๋น๋๋ ์ด์ ๋ฒ์ ์ Mac OS SDK๋ก ๋น๋๋์์ผ๋ฉฐ ์ฌํจํค์ง ๋ฐ ์ฌ๊ณต์ฆํ ์ ์์ต๋๋ค.
Java๋ง ์ค์นํ๋ ค๋ ๊ฒฝ์ฐ ์ต์ .pkg ์ค์น ํ๋ก๊ทธ๋จ์ด OSX Catalina์์ ์๋ํ๋ฉฐ ์ ๋ Java๋ฅผ ์ค์นํ๊ณ ์คํํ ์ ์์ต๋๋ค. ์ด ์ค์น ํ๋ก๊ทธ๋จ์ ๊ณต์ฆ๋์์ผ๋ฉฐ ๋ฌธ์ ์์ด ์ปดํจํฐ์ Java๋ฅผ ์ค์นํ ์ ์์ต๋๋ค.
gadams๋ Java 8์ ๊ณต์ฆ ๊ฐ๋ฅํ ๋น๋๋ฅผ ์ป๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฉฐ ์ด๋ฌ ๋ง์ ์๋ฃ๋๊ธฐ๋ฅผ ํฌ๋งํ๊ณ ์์ต๋๋ค. ๋๋ ๊ทธ์ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค์๊ฒ ํ์ด์ ๋น๋๋ค.
๊ทํ์ ์ง๋ฌธ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๊ณ ์๋ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ jvm์ ๋ฒ๋ค๋ก ์ ๊ณตํ ๋ค์ ์ด๋ฅผ ๊ณต์ฆํ๊ณ ์ถ์ต๋๋ค. ํ์ฌ, ๋น์ ์ ํ ์ ์์ต๋๋ค
๋ค ๋ง์ต๋๋ค. ์ ๋ถ๋ถ์์ ์ฝ๋ ๋ณ๊ฒฝ์ด ํ์ํ์ง๋ง AdoptOpenJDK Java 11 ๋น๋๊ฐ ์๋ํฉ๋๊น?
๋๋ Oracle ๋น๋๋ฅผ ์ค์นํ๋ฉด ์๋ํฉ๋๋ค. ํ์ฌ MacOS์์ Oracle Java 8์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ 2์ 3์ผ๊น์ง ์๋ํ์ต๋๋ค. ์ด๊ฒ์ด .pkg ๋น๋๋ฅผ ์๋ฏธํฉ๋๊น?
์ง๊ธ ์ฌ์ฉํ ์ ์๋ ์๋ฃจ์ ์ ์ฐพ๊ณ ์์ต๋๋ค. ํ์ฌ ์ต์ ์ด ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
@ijabz ๊ฐ์ธ์ ์ผ๋ก ์์ ํ์ง ์์๊ธฐ ๋๋ฌธ์ Java 11 ์ด์์ ๋ํด ๋งํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์๊ฒฌ์ผ๋ก ํ๋จํ๋ฉด ์๋ํ๋ ๋ฒ๋ค์ ์ป๋ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. Java 8 ๋น๋ ์์ ์ ๋ํด์๋ง ์ด์ผ๊ธฐํ ์ ์์ต๋๋ค.
mac ์ค์น ํ๋ก๊ทธ๋จ ํจํค์ง ๋๋ .pkg ํ์ผ์ ์ํํธ์จ์ด ์ค์น ํ๋ก๊ทธ๋จ์
๋๋ค. ํ์ฌ ๊ณต์ฆ๋๊ณ ๋ค์๊ณผ ๊ฐ์ด Java๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์นํ๋ AdoptOpenJDK ๋น๋์ ์ฌ์ฉํ ์ ์๋ .pkg ์ค์น ํ๋ก๊ทธ๋จ์ด ์์ต๋๋ค.
https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u242-b08/OpenJDK8U-jdk_x64_mac_hotspot_8u242b08.pkg
๋ด๊ฐ ๋ฉ์ฒญํ๋ค๊ณ ์๊ฐํ์ง๋ง AdoptOpenJDk๊ฐ ๊ณต์ฆ๋์์ง๋ง ์๋ง๊น์ง ์ค๋น๋์ง ์์ Java 8 ๋น๋์์ ์์ ํ๊ณ ์๋ค๋ ๊ฒ์ ์ดํดํ์ง ๋ชปํ์ง๋ง ๋ฐ๋๋ก ์ด๋ฏธ AdoptOpenJDk Java 8 ์ค์น ํ๋ก๊ทธ๋จ์ด ์ด๋ฏธ ์ค์น๋์ด ์์ต๋๋ค. ๊ณต์ฆ๋ ๋ฒ์ Java 8?
@ijabz ์ ์๊ฐ์ ๊ทธ ์ด์ ๋ 2020๋ 2์ 3์ผ ์ด์ ์ ๊ณต์ฆ๋ ๊ฒ์ด ์๋ค๋ฉด ์ฌ์ ํ ์ ํจํ๋ฉฐ macOS Catalina์์ ์๋ํ๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ง๊ธ์ ๊ท์น์ด ๋ ์๊ฒฉํด์ง๊ธฐ ๋๋ฌธ์ ๋ค์ ๊ณต์ฆํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ AdoptOpenJDK Java 8 ์ค์น ํ๋ก๊ทธ๋จ์ ์๋ง๋ 2์ 3์ผ ์ด์ ์ ๊ณต์ฆ์ ๋ฐ์์ผ๋ฏ๋ก ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ 2์ 3์ผ ์ดํ๋ก Apple์ XCode 10์ด ํ์ํ ์ฑ์ "๊ฐํ"ํ๋๋ก ์๊ตฌํ๊ธฐ ๋๋ฌธ์ ๋ ์ด์ ํจํค์งํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Java 8์ XCode 10์ผ๋ก ์ปดํ์ผ๋์ง ์์์ผ๋ฏ๋ก (์์ง) ๊ฐํํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ AdoptOpenJDK Java 8์ 2์ 3์ผ ์ด์ ์ ๊ณต์ฆ์ ๋ฐ์๊ธฐ ๋๋ฌธ์ ๊ฐํ๋์ง ์์์์๋ ๋ถ๊ตฌํ๊ณ ์ค์นํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ ์ด์ ์ ๋ฒ์ ์ ๋ง๋ค๊ฑฐ๋ ํ๋ก๊ทธ๋จ์ ํจํค์ง๋ก ๋ฌถ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๊ฐํํ ์ ์๊ณ ๋ฐ๋ผ์ ๊ณต์ฆํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ด๊ฐ ์ฝ์ ๊ฒ์์ ์ต์ํ JDK 11.0.7 ๋ฐ JDK 14๊ฐ ์ ๋๋ก ์๋ํ๋ ๊ฒ ๊ฐ๊ณ XCode 10์ ์ฌ์ฉํ์ฌ ์ปดํ์ผ๋๊ณ "๊ฐํ"๋์์ผ๋ฉฐ ์ต์ํ JDK 14๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ํจํค์งํ ์ ์์ต๋๋ค.
์๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ์ด์ ๋ ์ ์ดํดํ์ต๋๋ค.
JDK 11.0.7 ๋ฐ JDK 14๋ฅผ ์ฐธ์กฐํ ๋ ํ ๊ฐ์ง ๋ ๋ง์๋๋ฆฌ๋ฉด AdoptOpenJDk ๋น๋๋ฅผ ์๋ฏธํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. AdoptOpenJDk ๋น๋์ ์ํฉ์ Oracle ์ฌ์ดํธ์์ ๋ค์ด๋ก๋ํ ์ ์๋ ์ํฉ๊ณผ ๋์ผํฉ๋๊น?
์ฃ์กํฉ๋๋ค. ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. OpenJDK๋ก๋ง ์๋ํ์ต๋๋ค(AdoptOpenJDK๊ฐ ์๋๋ผ ๋ค๋ฅธ ๋ฐฐํฌํ์ด์ง๋ง ๋ชจ๋ OpenJDK ๋ฐฐํฌํ์์ ๋์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค). ๊ทธ๋ฌ๋ XCode 10๊ณผ ํธํ๋๋๋ก JDK 8์ ๋ณ๊ฒฝํด์ผ ํ๊ณ ๋ด๊ฐ ์๋ ํ Oracle์ OpenJDK ๋ฐ ์์ฒด ๋ฐฐํฌ์์ ๋์ผํ ๋ณ๊ฒฝ์ ์ํํ๊ธฐ ๋๋ฌธ์ JDK 8๋ ๊ฐํ๋์ง ์์๋ค๊ณ ์๊ฐํฉ๋๋ค( ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ทธ๋ค์ ๋ํ ๊ฐํ๋ Java 8์ OpenJDK ๋ฒ์ ์ ์ถ์ํ์ ๊ฒ์ ๋๋ค). ๊ทธ๋ฌ๋ ๋ด๊ฐ ๋งํ๋ฏ์ด ๋๋ ๊ทธ๊ฒ์ ์๋ํ์ง ์์์ต๋๋ค.
์์์ด ๊ณ ๋ง์. AdoptOpenJdk ๋น๋๋ฅผ ์ฌ์ฉํ๋ฉด Oracle์์ ๋ค์ด๋ก๋ํ๋ ๊ฒ๋ณด๋ค ์ด์ ์ด ๋ฌด์์ธ์ง ์์ ํ ํ์ ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ง๋ฌธํฉ๋๋ค.
@ijabz Oracle JDK๋ ์ ํ๋ ์ฌ์ฉ ์ฌ๋ก์์๋ง ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค( Oracle Java SE ๋ผ์ด์ ์ค FAQ ์ฐธ์กฐ). Oracle์ OpenJDK ๋น๋ ๋ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ฌ์ ํ ์ ํ ์์ด ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ง๋ง ์ง์๋๋ ํ๋ซํผ ๋ฐ ๋ฒ์ ์ ์๋ ์ฌ๊ธฐ AdoptOpenJDK์์ ์ ๊ณตํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ ์ต๋๋ค. ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด AdoptOpenJDK๋ OpenJDK์ ๋น๋์ ๋๋ค. ์ฐ๋ฆฌ์ ์ฃผ์ ๋ชฉํ ์ค ํ๋๋ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์คํธ๋ฆผํ๋ ๊ฒ์ ๋๋ค. OpenJDK์ ๋ค๋ฅธ ๊ณต๊ธ์ ์ฒด(Amazon, Azul, BellSoft, SAP ๋ฑ)๋ ์ ์ฑ ์ด ๋ค๋ฅผ ์ ์์ต๋๋ค.
๋ง์์. ์ด์ ์ต์ ๋น๋์ฉ์ผ๋ก MacOS ๋น๋๋ง ์ ๊ณตํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
@gdams , ๊ณต์ฆ๋ jdk8 ๋ฐ์ด๋๋ฆฌ๊ฐ ์๋ง๊น์ง ์ค๋น๋ ๊ฒ์ผ๋ก ์์ํ์ญ๋๊น? ๋ํ J9 JVM์ด ํฌํจ๋ฉ๋๊น?
@gdams , ๊ณต์ฆ๋ jdk8 ๋ฐ์ด๋๋ฆฌ๊ฐ ์๋ง๊น์ง ์ค๋น๋ ๊ฒ์ผ๋ก ์์ํ์ญ๋๊น? ๋ํ J9 JVM์ด ํฌํจ๋ฉ๋๊น?
BellSoft JDK8 ๋ฐฐํฌํ(https://bell-sw.com/pages/java-8u242/)์ ์ฌ์ฉํด ๋ณผ ์ ์์ต๋๊น? AdoptOpenJDK J8์ BellSoft J8๋ก ๊ต์ฒดํ๊ณ "The binary uses an SDK older than the 10.9 SDK."
๋ฅผ ์์ ๊ณ ๋ง์นจ๋ด ๊ณต์ฆ์ ๋ฐ์์ต๋๋ค.
BellSoft J8์ ์ด๋ฏธ ๊ณต์ฆ ์ค๋น๊ฐ ์๋ฃ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ด๊ฐ ์๊ธฐ๋ก๋ BellSoft JDK๋ ๋ฌด๋ฃ๊ฐ ์๋๋๋ค..
๋ด๊ฐ ์๊ธฐ๋ก๋ BellSoft JDK๋ ๋ฌด๋ฃ๊ฐ ์๋๋๋ค..
GPL์ ๋ํ "CLASSPATH" ์์ธ๊ฐ ์๋ GNU ์ผ๋ฐ ๊ณต์ค ์ฌ์ฉ ํ๊ฐ์(GPL)
์ผ๋ฐ Liberica Java SE 8u242 JDK ๋๋ JRE์ ๊ฒฝ์ฐ OpenJDK์ ๋์ผํ ๋ผ์ด์ผ์ค์
๋๋ค.
ํ์ํ ๊ฒฝ์ฐ ์์ ์ ์ง์์ ์ ๊ณตํฉ๋๋ค.
์ค๋ช ๊ฐ์ฌํฉ๋๋ค!
์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค! ๋ฐ๋ผ์ ์ต์ข ์๋ฃจ์ ์ ๋ฌธ์ํํ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
% security unlock-keychain -p passwordhere codesigning.keychain % find my-app.app -type f \ -not -path "*/Contents/runtime/*" \ -not -path "*/Contents/MacOS/my-app" \ -not -path "*libapplauncher.dylib" \ -exec codesign --timestamp --entitlements /tmp/bliss.entitlements -s "XXX" --prefix com.myapp. --options runtime -v --keychain /path/to/codesigning.keychain {} \; % find my-app.app/Contents/runtime -type f \ -not -path "*/legal/*" \ -not -path "*/man/*" \ -exec codesign -f --timestamp --entitlements /tmp/bliss.entitlements -s "XXX" --prefix com.myapp. --options runtime -v --keychain /path/to/codesigning.keychain {} \; % codesign -f --timestamp --entitlements /tmp/bliss.entitlements -s "XXX" --prefix com.myapp. --options runtime -v --keychain /path/to/codesigning.keychain my-app.app/Contents/runtime % codesign -f --timestamp --entitlements /tmp/bliss.entitlements -s "XXX" --prefix com.myapp. --options runtime -v --keychain /path/to/codesigning.keychain my-app.app
๋ชจ๋ ํ ์คํธ ์๋:
% codesign -vvv --deep --strict my-app.app/Contents/runtime my-app.app/Contents/runtime: valid on disk my-app.app/Contents/runtime: satisfies its Designated Requirement % codesign -vvv --deep --strict my-app.app/ --prepared:/private/tmp/my-app.app/Contents/MacOS/libapplauncher.dylib --validated:/private/tmp/my-app.app/Contents/MacOS/libapplauncher.dylib my-app.app/: valid on disk my-app.app/: satisfies its Designated Requirement % spctl -a -t exec -vv my-app.app my-app.app: accepted source=Developer ID origin=XXX
์คํ๋๋์?
% my-app.app/Contents/MacOS/my-app
๋ค!
๊ณต์ฆํฉ๋๊น?
Status: success Status Code: 0 Status Message: Package Approved
๋ง์ธ!
JRE ๋ฒ๋ค์ ๋ํ ์์ฝ:
jpackage
์ง๊ธ ์๋ช ์ด ๊นจ์ก์ต๋๋ค. ๊ณต์ฆ์ ๋ฐ์ผ๋ ค๋ฉด- ์์ ์ ์ฝ๋์ ์๋ช ํด์ผ ํฉ๋๋ค.
- JRE์ ๋ค์ ์๋ช ํด์ผ ํฉ๋๋ค.
-f
๋ฅผ ์ฌ์ฉํ์ฌ ์๋ช ์ ๊ฐ์ ์คํํฉ๋๋ค.- ๋ชจ๋ ์๋ช ํธ์ถ์์ ์๊ฒฉ์ ์ง์ ํด์ผ ํฉ๋๋ค.
๋๋ ๋น์ ์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅผ ์ ์์์ง๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๊ณ
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
"JavaFX ์์ฉ ํ๋ก๊ทธ๋จ ์ค๋ ๋" ์ค๋ ๋์ ์์ธ java.lang.UnsatisfiedLinkError: /private/var/folders/0f/trlp6tp95qjbzm99ds8pt8zm0000gp/T/JxBrowser/7.5/libbrowsercore_toolkit.dylib: dlopen/trlpfolders60ptm99 JxBrowser/7.5/libbrowsercore_toolkit.dylib, 1): ์ ํฉํ ์ด๋ฏธ์ง๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์ฐพ์์ต๋๋ค:
/private/var/folders/0f/trlp6tp95qjbzm99ds8pt8zm0000gp/T/JxBrowser/7.5/libbrowsercore_toolkit.dylib: (/private/var/folders/0f/trlp6tp95qjbzm99ds00pt์ ์ฝ๋ ์๋ช . ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์งํ ์ค: ๋งคํ ํ๋ก์ธ์ค์ ๋งคํ๋ ํ์ผ(ํ๋ซํผ์ด ์๋)์ด ์๋ก ๋ค๋ฅธ ํ ID๋ฅผ ๊ฐ์ง
์ด๊ฒ์ ๋ด๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ํ๋ ค๋ฉด ํด๋น ๊ถํ์ด ํ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๊น, ์๋๋ฉด ์ ๋ง์๋๋ก ๋๋ ๊ฒ์ ๋๊น?
๊ณต์ฆ ํ๋ก์ธ์ค์์ ๊ฐ์ฅ ์ค๋ง์ค๋ฌ์ด ๋ถ๋ถ์ ์ด ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ฅผ CI/CD ํ์ดํ๋ผ์ธ์ ์ฐ๊ฒฐํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. Apple์ด ํ ์คํธ ์๋ํฌ์ธํธ๋ฅผ ์ ๊ณตํ์ผ๋ฉด ํฉ๋๋ค. ๊ณต์ฆ์ ํ์ ์๊ณ ๊ณต์ฆ ๊ฐ๋ฅ ์ฌ๋ถ๋ง ์๋ฉด ๋ฉ๋๋ค. ๋ฌผ๋ก ๊ทธ ์ฐจ์ด๋ ์์ง๋ง ๋ช ๊ฐ์ง๊ฐ ๋ถํธํฉ๋๋ค.
@gravelld @dg76 ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์๋ ๋ค๋ฅธ ์ฌ๋์ด ์์ต๋๊น? ์๊ฒฉ์ ์์ฑํ๋ ค๊ณ ์๋ํ์ง๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๋นํ์ฑํํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
@dcboy95 ์ฃ์กํฉ๋๋ค. ์ ์ฒด ๋ฒ๋ค์ ๋ํ ์ ์ฉ ๋ฒ์์ ๊ด๋ จํ์ฌ ํน์ ๊ถํ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ฝ๋ ์๋ช ๊ณผ ํจ๊ป ๋ด๊ฐ ํจ๊ป ์ ๊ณตํ ์ ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ํด์ผ ํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ๋ฐ๋ผ์ ํจ๊ป ์ ๊ณต๋๋ ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค์๋ ์๊ฒฉ์ด ์์ด์ผ ํ๋ค๋ ์๋ฏธ์ผ๊น์? ์ฃ์กํฉ๋๋ค.
@dcboy95 codesign ๊ณผ ์์ ์ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ "libbrowsercore_toolkit.dylib" ํ์ผ์ ์ฌ์ํ๋ฉด ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. (์ด ์ ์์ ์ฌ๊ธฐ์ ์ด๋ฏธ ๊ฒ์ํ๋ค๊ณ ์๊ฐํ์ง๋ง ๋์๊ฒ์ ์ด๋ค ์๋ต๋ ์ฐพ์ ์ ์์ต๋๋ค.) ์ค๋ฅ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋จธ์ง ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๋ค๋ฅธ ์๋ช ์ด ์์์ ๋ํ๋ด๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ฌ๋์ด ์๋ฌด ๊ฒ๋ ๋ฃ์ง ์๋๋ก ๋ชจ๋ ๊ฒ์ด ๋์ผํ ์๋ช ์ ๊ฐ์ ธ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ "libbrowsercore_toolkit.dylib"์์ ์ฝ๋ ๋์์ธ์ ์คํํด ๋ณด์ญ์์ค. ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๊น?
@ dg76 ๋ถํํ๋ ์๋ํ์ง ์์์ต๋๋ค. ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ๋ฒ์ ์ด ์๋ ๊ฒฝ์ฐ ์์ฒด์ ์ผ๋ก ๋ค์ ์ค์น๋ฉ๋๋ค. ๋ฐ๋ผ์ ํด๋น ํ์ผ์ ์ฝ๋ ์ค๊ณํ ๋ ์ด์ ํ์ผ๋ก ์ธ์ํ๊ณ ์์ ๋ ํ์ผ์ ๋์ฒดํ์ฌ ์ ํ์ผ์ ๋ค์ด๋ก๋ํฉ๋๋ค. ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. com.apple.security.cs.disable-library-validation
๊ถํ์ด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ๊ทธ๋ ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
@dcboy95 ์ ์๊ฐ์๋ ์ด๊ฒ์ด ์๋ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. Apple ๊ณต์ฆ ์์คํ ์ ๋ชฉ์ ์ ๊ฐ๋ฐ์๊ฐ ์ฑ์ ๋ชจ๋ ๋ถ๋ถ์ด ํ ์คํธ๋ฅผ ๊ฑฐ์ณค๊ณ ๋ฌธ์ ๊ฐ ์์์ ํ์ธํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ๊ฐ๋ฐ์๊ฐ ํ ์คํธํ๊ณ ํ์ธํ์ง ์์ ๋ถ๋ถ์ ๋ฐํ์ ์ค์ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ก๋ถํฐ ๋ก๋ํ๋ ๊ฒ์ ํ์ฉ๋์ง ์์ ์ ์์ต๋๋ค. ๊ทธ๋ฅ ์๋ ๋ค์ด๋ก๋ ๊ธฐ๋ฅ์ ๋นํ์ฑํ ํ ์ ์์ต๋๊น?
@dg76 ์ ๋ณด ๊ฐ์ฌํฉ๋๋ค. ๋ฌธ์๋ฅผ ์กฐ์ฌํ์ฌ ์ด๊ฒ์ด ๊ฐ๋ฅํ์ง ํ์ธํด์ผ ํฉ๋๋ค. ๋ค์ ํ ๋ฒ ๊ฐ์ฌํฉ๋๋ค
์์ ํ ๊ณต์ฆ๋ AdoptOpenJDK 14+36 ์ด ์ถ์๋์์ต๋๋ค. ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ค์ ๋ณด๊ณ ํด ์ฃผ์ญ์์ค.
์์ ํ ๊ณต์ฆ๋ JDK 8์ ์์ง ์์ ์ค์ ๋๋ค. ๋ค์ ๋ถ๊ธฐ CPU(4์ 17์ผ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ํ์์ผ)์ ์ด๊ฒ์ด ํฌํจ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
ํ์ํ ํจ์น๋ ์ผ๋ถ ํ ์คํธ ์คํ(TCK ํฌํจ)์ ํต๊ณผํ์ง๋ง ๋ ๋ง์ ๊ฒ์ฆ์ด ํ์ํฉ๋๋ค. @gdams ๋ ๋จธ์ง ์์ ๋ฏธ๋์ ํ ์คํธ์ฉ ๋น๋๋ฅผ ์ ๊ณตํ ์ ์๋๋ก ํ์ฌ ์ํ๋ฅผ ๊ฒ์ํ ๊ณํ์ ๋๋ค.
@aahlenst JDK 11์ ๋ํ ๊ณํ์ด ์์ต๋๊น?
@dcboy95 ๊ณต์ฆ๋ JDK 11์ ๋ค์ ๋ถ๊ธฐ CPU์ ์ผ๋ถ๋ก ๊ฒ์๋ ์์ ์ ๋๋ค(์ค๋ผํด์ ๊ท์น์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ธฐ์ตํ๋ค๋ฉด 4์ 17์ผ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ํ์์ผ ์งํ). ๊ทธ ๋์ https://adoptopenjdk.net/nightly.html?variant=openjdk11&jvmVariant=hotspot ์์ JDK 11์ ์ผ๊ฐ ๋น๋๋ฅผ ๊ฐ์ ธ์ ์๋ํ์ง ์์ผ๋ฉด ๋ค์ ๋ณด๊ณ ํ ์ ์์ต๋๋ค.
์๋ ํ์ธ์ ์ค์น ํ๋ก๊ทธ๋จ์ jdk-11.0.7+7์ ์ฌ์ฉํ๋ ค๊ณ ์๋ํ์ง๋ง ์ฌ์ ํ [1] "๋ฐ์ด๋๋ฆฌ ์๋ช ์ด ์๋ชป๋์์ต๋๋ค" ์ค๋ฅ์ ํจ๊ป ์คํจํฉ๋๋ค.
[1] /Contents/MacOS/libjli.dylib
@NishikaDeSilva ๋ค์์ ์คํํด ๋ณด์ญ์์ค.
codesign --verbose=4 --deep --force -s "Developer ID Application: MyTeam (XXXX)" installer.jdk
@gdams ์๋ฃจ์ ์ ์๋ํ์ต๋๋ค.
๋ช ๋ น: codesign --verbose=4 --deep --force -s "๊ฐ๋ฐ์ ID ์์ฉ ํ๋ก๊ทธ๋จ: abc (xxxxx)" jdk-11.0.7+7
์ฐ์ถ:
jdk-11.0.7+7: ๊ธฐ์กด ์๋ช
๊ต์ฒด
jdk-11.0.7+7: ๋ฆฌ์์ค ํฌํฌ, Finder ์ ๋ณด ๋๋ ์ด์ ์ ์ฌํ ์ฐ๋ ๊ธฐ๋ ํ์ฉ๋์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ํ๋
๋๋ค ...
jdk-11.0.7+7: ์ฝ๋์ ๋ฆฌ์์ค๊ฐ ์์ง๋ง ์๋ช
์ ๋ฆฌ์์ค๊ฐ ์์ด์ผ ํจ์ ๋ํ๋
๋๋ค.
๋ด๊ฐ ๋ญ๊ฐ ์๋ชปํ๊ณ ์์ต๋๊น?
์ผ๊ฐ ๋น๋์์ 11.0.7+7์ ์๋ํ์ต๋๋ค. ๊ณต์ฆ์ด ํต๊ณผ๋๊ณ ์ ์ฒญ์๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๋ํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฐ์ด๋๋ฆฌ(dylib)๋ ์ด์ JNA์์ ์ฌ์ฉํ๋ ๋ค์ดํฐ๋ธ ๋ก๋์ ์ํด์๋ง ์คํ๋ jar ๋ฒ๋ค์์ ์กฐํ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ด์ ์์คํ ์ ์ค์น๋ dylib์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด UnsatisfiedLinkErrors๋ฅผ ์์ ํฉ๋๋ค. ์ด๊ฒ์ ์ด์ ์ ์๋ํ์ต๋๋ค.
@MoxxiManagam dylibs์ ์๋ช
๋์์ต๋๊น? codesign -v -v /path/to/dylib
๋ก ํ์ธํ์ญ์์ค.
@aahlenst ์์ฌ์ค๋ฝ์ต๋๋ค. ์์คํ
์ ์ค์น๋ ํ์ฌ dylib(์ฅ์น ๋๋ผ์ด๋ฒ)์ด๋ฉฐ ์ฐ๋ฆฌ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ผ๋ถ๊ฐ ์๋๋๋ค. ๋ํ ํ์ฑ com.apple.security.cs.disable-library-validation
์๊ฒฉ์ด ์๋๋ฐ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
lib๋ /usr/local/lib/
๋๋ ํ ๋ฆฌ์ ์์ต๋๋ค.
JDK 11 JRE์ ์ผ๊ฐ ๋น๋๋ฅผ ์ฌ์ฉํ์ฌ NishikaDeSilva์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. JRE 13 ๋ฐ 14์ ์ผ๊ฐ ๋น๋๋ ์ข์ ์ธก์ ์ ์ํด ํ ์คํธํ์ต๋๋ค.
๋์์ด ๋์ค์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ ๋ฉ๋ชจ๋ฅผ ๋จ๊ฒจ๋ด ๋๋ค.
codesign -dvvv libjli.dylib
๋ฅผ ์คํํ์ฌ ์๋ช
๊ฒฐ๊ณผ๋ฅผ ํ์ธํฉ๋๋ค.
Executable=[...]/Contents/MacOS/libjli.dylib
Identifier=libjli
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20500 size=786 flags=0x10000(runtime) hashes=16+5 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=512c6006363d2928665d9d135f360f974fe66d27
CandidateCDHashFull sha1=512c6006363d2928665d9d135f360f974fe66d27
CandidateCDHash sha256=1157d57e9849eb161251e3a4bca6e2ab7200eaa1
CandidateCDHashFull sha256=1157d57e9849eb161251e3a4bca6e2ab7200eaa11cf4d1f13ae558f0a8ae207e
Hash choices=sha1,sha256
CMSDigest=2727b2d669fee540fd5848fffba07d583d737065d4f28c205530b29f44dfb347
CMSDigestType=2
CDHash=1157d57e9849eb161251e3a4bca6e2ab7200eaa1
Signature size=9037
Authority=Developer ID Application: London Jamocha Community CIC (VDX7B37674)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Mar 31, 2020 at 8:44:15 AM
Info.plist=not bound
TeamIdentifier=VDX7B37674
Runtime Version=10.14.0
Sealed Resources=none
Internal requirements count=1 size=168
spctl -a -vv libjli.dylib
๋ก ์๋ช
์ ํ์ธํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ฉ๋๋ค.
libjli.dylib: code has no resources but signature indicates they must be present
ํด๋น ์ค๋ฅ์ ๋ํ ์ข์ ๋ฌธ์๋ฅผ ์ฐพ์ ์ ์์ง๋ง ์์ ์๋ช
์ด none
๋ผ๊ณ ๋งํ๋ "๋ด์ธ๋ ๋ฆฌ์์ค"์ ๊ด๋ จ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํฐ ์๋ฏธ๊ฐ ์์ต๋๋ค.
ํ์ผ์ ์ง์ ์ฝ๋ ์ค๊ณํ๋ ค๊ณ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋ฉ๋๋ค.
resource fork, Finder information, or similar detritus not allowed
ํด๋น ์ค๋ฅ์ ๋ํ ๋ชจ๋ ๊ธฐ์กด ๋ฌธ์์๋ ํ์ผ์ ํ์ฅ๋ ์์ฑ์ผ๋ก ์ธํด ๋ฐ์ํ๋ค๊ณ ๋์ ์์ต๋๋ค. ํนํ com.apple.FinderInfo
๋ฐ com.apple.ResourceFork
. ๊ทธ๋ฌ๋ ls -l@ libjli.dylib
๋ฐ xattr -l libjli.dylib
์๋ xattributes๊ฐ ๋์ด๋์ง ์์ต๋๋ค.
ํฅ๋ฏธ๋กญ๊ฒ๋ ํ์ผ์ ๋ค๋ฅธ ์์น( Contents/MacOS
ํด๋ ์ธ๋ถ)๋ก ์ฎ๊ธฐ ๊ฑฐ๋ ํ์ผ ํ์ฅ์๋ฅผ .dylib
์ด์ธ์ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ์์ ๋ฌด์๋ฏธํ ๊ฒ ์์ด ์ฝ๋ ์๋ช
๋ฐ ์๋ช
ํ์ธ์ด ์ ์์ ์ผ๋ก ํต๊ณผํฉ๋๋ค. ์ค๋ฅ. ์ฝ๋ ์ค๊ณ ๋ฉ์ปค๋์ฆ์ ํ์ผ์ ์์น๋ ๊ณ ๋ คํด์ผ ํ๋ฏ๋ก Contents/Home/lib/jli/libjli.dylib
์ ํ์ผ ๊ฒฐ๊ณผ์ ๋ฌ๋ผ์ผ ํฉ๋๋ค.
๊ณต์ฆ(์ผ๊ฐ ๋น๋) ํ /usr/local/lib/
๋ด์์ ์ฐพ์ ์ ์๋ ๋๋ผ์ด๋ฒ dylib์ ๋ํ ์
๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
spctl -a -vv libjli.dylib๋ก ์๋ช ์ ํ์ธํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ฉ๋๋ค.
libjli.dylib: ์ฝ๋์ ๋ฆฌ์์ค๊ฐ ์์ง๋ง ์๋ช ์ ๋ฆฌ์์ค๊ฐ ์์ด์ผ ํจ์ ๋ํ๋ ๋๋ค.
@justin-espedal ์ต์์ ๋๋ ํ ๋ฆฌ์์ ์ด๊ฒ์ ์คํํด ๋ณด์ญ์์ค:
xattr -cr .
codesign --verbose=4 --deep --force -s "Developer ID Application: MyTeam (XXXX)" adoptopenjdk-11.jdk
์ฐ์ถ:
jdk-11.0.7+7: ๊ธฐ์กด ์๋ช ๊ต์ฒด
jdk-11.0.7+7: ๋ฆฌ์์ค ํฌํฌ, Finder ์ ๋ณด ๋๋ ์ด์ ์ ์ฌํ ์ฐ๋ ๊ธฐ๋ ํ์ฉ๋์ง ์์ต๋๋ค.
@NishikaDeSilva ๋ codesign ๋ช ๋ น์ ์คํํ๊ธฐ ์ ์ ๋๋ ํ ๋ฆฌ์์ ์ด๊ฒ์ ์คํํฉ๋๋ค:
xattr -cr .
๊ทธ๊ฒ์ ํจ๊ณผ๊ฐ ์์ต๋๋ค. ์ฌ๊ท -cr
๊ฐ ํ์ํ์ง ์์ผ๋ฉฐ ์ต์์ ํด๋์์ com.apple.FinderInfo
๋ง ์ ๊ฑฐํ๋ฉด ์ถฉ๋ถํฉ๋๋ค. ์ต์์ ํด๋์ FinderInfo ์์ฑ์ด ์ ์ฒด ํจํค์ง์ ์ฝ๋ ์ค๊ณ๋ฅผ ๋ฐฉํดํ๋ ๊ฒ์ ๋น์ฐํฉ๋๋ค.
ํด๋น xattr์ด ์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด libjli.dylib๋ ์ฌ์ ํ ์์ฒด์ ์ผ๋ก ๊ณต๋ ์ค๊ณํ ์ ์์ต๋๋ค. ์ฝ๋ ์ค๊ณ ๋ฉ์ปค๋์ฆ์ ํฌํจํ๋ ํจํค์ง ์ฝ๋ ์๋ช ์ผ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ํ์ธํ๊ธฐ ์ํด ํด๋น ํน์ ์์น์ dylib๊ฐ ํ์ํฉ๋๊น? ๋ง์ฝ ๊ทธ๋ ๋ค๋ฉด(๋๋ ๊ทธ๊ฒ์ ๊ด๊ณ์์ด), ์ ์ ์ฒด ํจํค์ง๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋จ์ํ ๊ณต๋ ์ค๊ณ๋์ง ์์ต๋๊น?
๊ผญ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ์ ์ฒด JRE ์ฝ๋๋ฅผ ์ฝ๋ ์๋ช ํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
@gadams @aahlenst ๊ณต์ฆ๋ JDK 1.8์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? 4์ 17์ผ ๋ฐ๋งค์ธ๊ฐ์? ์ํํด ๋ณผ ์ด์ ํคํธ๊ฐ ์์ต๋๊น?
๋ค์ ์ฃผ์๋ ๊ณต์ฆ๊ณผ ๊ฐํ๋ ๋ฐํ์์ด ์๋ 8u252๊ฐ ๋จผ์ ์์ ๊ฒ์ ๋๋ค. ๊ทธ ํ, ์ฐ๋ฆฌ๋ ์ค์์น๋ฅผ ๋ค์ง์ด ๊ณต์ฆ๊ณผ ๊ฐํ๋ ๋ฐํ์์ผ๋ก ์ค์์น๋ฅผ ๋ง๋ค ๊ฒ์ ๋๋ค. ์ถ๊ฐ ์ ๋ณด๊ฐ ์ด์ด์ง๋๋ค. ๋ค๋ฅธ ์ฌ๋์ด ํ ์คํธํ ์ค๋น๊ฐ ๋ ๋ฐ์ด๋๋ฆฌ๊ฐ ์ด๋ฏธ ์๋์ง ์ฌ๋ถ๋ ์ ์ ์์ต๋๋ค.
8u252์๋ ์ดํ SDK์ ๋ํด ๋น๋๋ libAppleScriptEngine.dylib๊ฐ ํฌํจ๋๋ฏ๋ก '๋ฐ์ด๋๋ฆฌ๋ 10.9 SDK๋ณด๋ค ์ค๋๋ SDK๋ฅผ ์ฌ์ฉํฉ๋๋ค'์ ํจ๊ป ์คํจํ์ง ์์ต๋๋ค. ์ด๊ฒ์ด ๊ฐ์ฅ ๋์์ด ๋ ๊ฒ์ ๋๋ค. https://stackoverflow.com/questions/61208189/java-notarization -of-libapplescriptengine-dylib-failing-with-the-binary-uses-an
์ค๋ซ๋์ ๊ธฐ๋ค๋ ค์จ 8u252๊ฐ ๋์์ง๋ง ๊ทธ ์์ ์๋ ๊ฑฐ์ ๋ชจ๋ ๋ฐ์ด๋๋ฆฌ๊ฐ ์ฌ์ ํ sdk 10.8๋ก ๋น๋๋์ด ์ฑ๊ณต์ ์ธ ๊ณต์ฆ์ ๋ฐฉํดํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
https://ci.adoptopenjdk.net/view/work%20in%20progress/job/jdk8u-mac-x64-hotspot-notarized/10/ ์ JRE์๋ 10.14 ๋ฐ์ด๋๋ฆฌ๊ฐ ํฌํจ๋์ด ์์ผ๋ฏ๋ก ๊ณต์ 8u252์๋ ํฌํจ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ค์ ์ฃผ์๋ ๊ณต์ฆ๊ณผ ๊ฐํ๋ ๋ฐํ์์ด ์๋ 8u252๊ฐ ๋จผ์ ์์ ๊ฒ์ ๋๋ค. ๊ทธ ํ, ์ฐ๋ฆฌ๋ ์ค์์น๋ฅผ ๋ค์ง์ด ๊ณต์ฆ๊ณผ ๊ฐํ๋ ๋ฐํ์์ผ๋ก ์ค์์น๋ฅผ ๋ง๋ค ๊ฒ์ ๋๋ค.
๊ณต์ ํ ์ ์๋ ์ผ์ ์ด ์์ต๋๊น?
@meshcow ์ถ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋์ ์ฒ์๋ถํฐ ๊ฒฌ์ ์ ๋ด์ง ์์์ต๋๋ค. ์ผ๋ฐ ๋น๋๊ฐ ์๋ ํ์ดํ๋ผ์ธ์ ์ฌ์ ํ โโ์คํ ์ค์ ๋๋ค(์: HotSpot์ 14.0.1 ๋ฐ OpenJ9์ 11.0.7). ๋ฐํ์์ด ๊ฐํ๋ ๋ฒ์ ์ ๋์ค์ ๋น๋๋ฉ๋๋ค.
@meshcow - ์ฐ๋ฆฌ๋ Mac Os ๊ณต์ฆ ํจ์น๋ฅผ ํ ์คํธํ๊ธฐ ์ํด 8u252.1์ ๊ตฌ์ถํ ๊ฒ์ ๋๋ค. ํ๋ฃจ๋ ์ดํ ์์ ์ฌ๊ธฐ์ ์ฌ ๊ฒ์ ๋๋ค.
์ฐธ๊ณ ๋ก ์ ๋ BellSoft 8u252๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต์ฆ์ ํ์ฉํ๊ธฐ ์ํด ์ดํ SDK์ ๋ํด ๋น๋๋ libAppleScriptEngine.dylib๋ฅผ ๊ฐ์ ธ์ค๊ณ ๊ทธ๊ฒ์ด ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
๋ํ ๋ด๊ฐ AdoptJDk 11.0.7 JRE ๋น๋๋ฅผ ๋ด ์ฑ์ ๋ฒ๋ค๋ก ํฌํจํ๊ณ ๋ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๊ณต์ ์ผ๋ก ๊ณต์ฆํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
์ฐธ๊ณ ๋ก ์ ๋ BellSoft 8u252๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต์ฆ์ ํ์ฉํ๊ธฐ ์ํด ์ดํ SDK์ ๋ํด ๋น๋๋ libAppleScriptEngine.dylib๋ฅผ ๊ฐ์ ธ์ค๊ณ ๊ทธ๊ฒ์ด ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
์ฑ๊ณผ ํจ๊ป jre๋ฅผ ๋ฒ๋คํ๋ ๋ฐ ๋ฌด์์ ์ฌ์ฉํ๊ณ ์๋์ง ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น? javapackager๋ฅผ ์ฌ์ฉํ๋ฉด fxbundlerpath/Contents/MacOS/libpackager.dylib: is already signed
๋ผ๊ณ ํ์๋ฉ๋๋ค.
AdoptJDK 11์์๋ ์ด๋ป๊ฒ ํฉ๋๊น?
Appbundler(InfinityKind ํฌํฌ)๋ฅผ ์ฌ์ฉํ์ต๋๋ค - https://github.com/TheInfiniteKind/appbundler/
๋ด์ผ stackoveflow์ ๋ํ ์์ธํ ๋ต๋ณ์ ๊ฒ์ํ๋ ค๊ณ ํฉ๋๋ค.
@as1an https://stackoverflow.com/questions/58548736/notarize-existing-java-application-for-macos-catalina ์์ ๋ด ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ์ถ๊ฐํ์ต๋๋ค.
ํ ์คํธํ J9 JVM 1.8 ๊ณต์ฆ ๋น๋๊ฐ ์๋ ์ฌ๋์ด ์์ต๋๊น?
@meshcow ์ถ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋์ ์ฒ์๋ถํฐ ๊ฒฌ์ ์ ๋ด์ง ์์์ต๋๋ค. ์ผ๋ฐ ๋น๋๊ฐ ์๋ ํ์ดํ๋ผ์ธ์ ์ฌ์ ํ โโ์คํ ์ค์ ๋๋ค(์: HotSpot์ 14.0.1 ๋ฐ OpenJ9์ 11.0.7). ๋ฐํ์์ด ๊ฐํ๋ ๋ฒ์ ์ ๋์ค์ ๋น๋๋ฉ๋๋ค.
@aahlenst J9 ๋ฒ์ ์ 1.8 JVM๋ ํฌํจ๋ฉ๋๊น?
์ด๋ฒ์ฃผ์ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค!
๊ณต์ฆ๋ JDK8u ํซ์คํ ๋ฐ์ด๋๋ฆฌ๊ฐ ์ค๋ ์ถ์๋์์ต๋๋ค jdk8u252-b09.1
https://adoptopenjdk.net/archive.html?variant=openjdk8&jvmVariant=hotspot
์ฌ์ฉํด ๋ณด๊ณ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์!
OpenJ9๋ ๊ณง ์ถ์๋ ์์ ์ ๋๋ค.
๋ฒ๋ค ํซ์คํ 8u252-b09.1 JRE๋ก ์ฑ์ ์ฑ๊ณต์ ์ผ๋ก ๊ณต์ฆํ ์ ์์์ต๋๋ค.
์ ๋ง ๊ฐ์ฌํฉ๋๋ค!
@meshcow ์ฑ์ JVM์ด ํฌํจ๋์ด ์์ต๋๊น, ์๋๋ฉด ์ธ๋ถ์์ ์ฌ์ฉํฉ๋๊น? JVM์ ์๋ช ์ด ์ฑ ์๋ช ๊ณผ ๋ค๋ฅด๋ค๋ ๋ฐํ์ ๋ฌธ์ ๊ฐ ํ์๋ฉ๋๋ค.
@meshcow ์ฑ์ JVM์ด ํฌํจ๋์ด ์์ต๋๊น, ์๋๋ฉด ์ธ๋ถ์์ ์ฌ์ฉํฉ๋๊น? JVM์ ์๋ช ์ด ์ฑ ์๋ช ๊ณผ ๋ค๋ฅด๋ค๋ ๋ฐํ์ ๋ฌธ์ ๊ฐ ํ์๋ฉ๋๋ค.
JVM์ ์๋ฒ ๋๋(JNI)์ด๋ฉฐ ์ฑ์ ๋น์ฌ ์ธ์ฆ์๋ก ์๋ช
๋ฉ๋๋ค. JRE์ ๋ชจ๋ ํญ๋ชฉ์ด ์ด๋ฏธ ์๋ช
๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ๊ธฐ ๋๋ฌธ์ JRE ๋ด์์ ์๋ฌด ๊ฒ๋ ์๋ช
ํ์ง ์์์ต๋๋ค.
์ง๊ธ๊น์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
@meshcow ๋๋ ์ด๊ฒ์ด ๊ด๋ จ์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์ผ๋ฉฐ ์ด๊ฒ์ด ์ด์ ๋ํ ์ฌ๋ฐ๋ฅธ ํฌ๋ผ์ด ์๋ ๊ฒฝ์ฐ ์ฌ๊ณผํ์ง๋ง ๋ฒ๋ค ์ฑ์์ JNI๋ฅผ ์๋์ํค๋ ๋ฐ ์ด๋ ค์์ ๊ฒช๊ณ ์์ผ๋ฉฐ ๊ฑฐ๊ธฐ์ ๋๋ฌํ๋ ๋ฐ ๋์์ด ๋ ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค. . ๋ด๊ฐ ์ฐพ์ ์ ์๋ ๋ชจ๋ ํ์ฌ Java ์ฑ ๋ฒ๋ค๋ฌ๋ JRE๊ฐ ๊ณต์ฆ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ ๊ณต์ฆ์ ๋ฐฉ์งํ๋ ๊ฐํ๋์ง ์์ ์คํ ํ์ผ์ ์์ฑํฉ๋๋ค.
์ด ๋ง์ง๋ง ์ฅ์ ๋ฌผ์ ๊ทน๋ณตํ๋ ๋ฐ ๋์์ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
@addsomebass - ์ฐ๋ฆฌ๋ ํ์ค ์ฑ
์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค. Java Invocation API๋ฅผ ์ฌ์ฉํ์ฌ JVM์ ๋ก๋ํ๊ณ [์์] Java ์ฑ์ ์์ํ๋ Objective C๋ก ์์ฑ๋ ์์ ์คํ ํ๋ก๊ทธ๋จ์
๋๋ค. ๋ฐ์ฒ๋ /Contents/MacOs ์๋์ OSX ์ฑ ๋๋ ํ ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค. JRE๋ /Contents/[app-name]/jre ์๋์ Java ์ฑ ํด๋์ ์ ์ฅ๋ฉ๋๋ค.
OSX ์ฑ์ด ์๋ช
๋๋ฉด ๊ณต์ฆ์ ์ํด ๋ณด๋ผ ์ค๋น๊ฐ ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ฝ๋ ๋์์ธ์ ๋ํด ๋ค์ cmd-line args๋ฅผ ์ฌ์ฉํฉ๋๋ค: --strict --timestamp --entitlements entitlements.plist --force --deep --options runtime
๋ฐ entitlemenst.plist ๋ด์ฉ์ https://stackoverflow.com/a/58553559 ๋ต๋ณ๊ณผ ๊ฐ์ต๋๋ค.
๋ฐ๋ผ์ ๋ด๊ฐ ์กฐ์ธํ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋๋ง์ ๋ฐ์ฒ๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์์์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด https://github.com/search?l=Objective-C&q=JNI_createJavaVM&type=Code ์ ๊ฐ์ด ๋ง์ ์์ ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
@addsomebass ์์ฒด ๋ฐ์ฒ๊ฐ ํ์ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. Java 14์ Java packager jpackage๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ๋ค๋ก ์ ๊ณต๋๋ ์ผ๋ฐ Java ํ๋ก๊ทธ๋จ์์ JNI๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์์ ๋ด ๋จ๊ณ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค: https://blog.dgunia.de/2020/02/12/signed-macos-programs- with-java-14/ JNI ๋ถ๋ถ์ด ์๋ ์๋ช ๋ง ์ค๋ช ํฉ๋๋ค. ํ์ง๋ง ๊ทธ ๊ณผ์ ์์ ์๋ช ๋ ์ผ๋ฐ JNI dylib ํ์ผ์ ๋ง๋ค์์ต๋๋ค. ์ง๊ธ๊น์ง ์ ์๋ํ๊ณ ๊ณต์ฆ์ด ๊ฐ๋ฅํ์ต๋๋ค.
@addsomebass @dg76 Java 8์ 14๊ฐ ์๋๋ผ ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ์ ๋๋ค.
@meshcow @dg76 ํ ๊ฐ์ฌํฉ๋๋ค. RMI ๋ณ๊ฒฝ์ผ๋ก ์ธํด Java 8๋ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ง๊ธ ๊ณต์ฆ์ ์ง์ํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง ํจํค์ง์์ javapackager
๋ ์ด๋์ ์์ต๋๊น? javapackager ์์ด "์ผ๋ฐ" jdk8 ๋น๋๋ง ์ฐพ์ ์ ์์ต๋๋ค. javapackager๊ฐ ๋ด์ฅ๋ ์ ์ฒด jdk๊ฐ ์์ต๋๊น?
@gdams @aahlenst
์ง๋์ฃผ์ ์ถ์๋ Open J9 ๊ฐํ ๋ฒ์ ์ ์ฌ์ฉํ์ผ๋ฉฐ ๊ณต์ฆ ๊ณผ์ ์์ Apple๋ก๋ถํฐ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
libjli.dylib์ ์๋ช ์ด ์๋ค๊ณ ๋์ ์์ง๋ง ๋งํฌ ํ์ผ์ด๋ผ๊ณ ์๊ฐํฉ๋๊น?
์ฐ๋ฆฌ๋ ๋ํ์ด ๋ช ๋ น์ ์๋ํ์ต๋๋ค
ํ์ผ ๋ค์ด๋ก๋ - OpenJDK8U-jre_x64_mac_openj9_macosXL_8u252b09_openj9-0.20.0.tar.gz* jdk8u252-b09-jre-j9 ํด๋์ ์์ถ์ ํ๊ณ ์๋ช ํ์ธ -
๋ ๋ค ๊ด๋ จ์ด ์๋์ง ํ์คํ์ง ์์ต๋๋ค. ์ด์ ๋ํ ์์ ์ฌํญ์ด ์์ต๋๊น?
๊ฐ์ฌํฉ๋๋ค.
๋์์ด ํ์ํ๋ฉด https://github.com/adoptopenjdk/openjdk-support/์์ ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
2020-02-06 06:01:30 +0000 ํ์ฌ ๋ค์๊ณผ ๊ฐ์ ๊ณต์ฆ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ฌ๊ฐ๋ | "์ค๋ฅ"
๊ฒฝ๋ก | "..../Contents/Plugins/Java.Runtime/Contents/Home/jre/bin/java"
๋ฉ์์ง | "๋ฐ์ด๋๋ฆฌ๋ 10.9 SDK๋ณด๋ค ์ค๋๋ SDK๋ฅผ ์ฌ์ฉํฉ๋๋ค."
๊ฑด์ถ | "x86_64"
๋ฐ๋ผ์ ๊ฐ๊น์ด ์์ผ ๋ด์ ๋์ผํ ๋ฌธ์ ๋ฅผ ๋ณด๊ฒ ๋ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.