Temurin-build: MacOS ๊ฐ•ํ™” ๋Ÿฐํƒ€์ž„ ์ง€์›

์— ๋งŒ๋“  2019๋…„ 06์›” 25์ผ  ยท  120์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: adoptium/temurin-build

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 ๋Ÿฐํƒ€์ž„")์„ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ํ›Œ๋ฅญํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์˜๊ฒฌ์— ๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์•ˆ๋ถ€
ํ‹ธ๋กœ

enhancement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

2020-02-06 06:01:30 +0000 ํ˜„์žฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณต์ฆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์‹ฌ๊ฐ๋„ | "์˜ค๋ฅ˜"
๊ฒฝ๋กœ | "..../Contents/Plugins/Java.Runtime/Contents/Home/jre/bin/java"
๋ฉ”์‹œ์ง€ | "๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” 10.9 SDK๋ณด๋‹ค ์˜ค๋ž˜๋œ SDK๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."
๊ฑด์ถ• | "x86_64"

๋”ฐ๋ผ์„œ ๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ๋ณด๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  120 ๋Œ“๊ธ€

์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
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/>

jdk11 ์•ฑ ๊ณต์ฆ ํ…Œ์ŠคํŠธ: ๋ณด๊ณ  (์„ฑ๊ณต)

jdk12 ์•ฑ ๊ณต์ฆ ํ…Œ์ŠคํŠธ: ๋ณด๊ณ  (์„ฑ๊ณต)

@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 ์ง€๊ธˆ ์„œ๋ช…์ด ๊นจ์กŒ์Šต๋‹ˆ๋‹ค. ๊ณต์ฆ์„ ๋ฐ›์œผ๋ ค๋ฉด
  • ์ž์‹ ์˜ ์ฝ”๋“œ์— ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • JRE์— ๋‹ค์‹œ ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. -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์ด ํ…Œ์ŠคํŠธ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ œ๊ณตํ–ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์ฆ์€ ํ•„์š” ์—†๊ณ  ๊ณต์ฆ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋งŒ ์•Œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ทธ ์ฐจ์ด๋Š” ์ž‘์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€๊ฐ€ ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค.

  1. ํƒ€์‚ฌ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ณต์ฆ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•˜๋Š” ์ ‘์ˆ˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์ฆ์„ ์œ„ํ•ด ํ•ด๋‹น ์ œ3์ž๋ฅผ ์ œ์ถœํ•จ์œผ๋กœ์จ ์ €๋Š” ์ด์ œ ์ œ ํšŒ์‚ฌ ์‹ ์šฉ์„ ์‚ฌ์šฉํ•˜๋Š” ์ œ3์ž๋ฅผ ๊ณต์ฆํ–ˆ์œผ๋ฉฐ ์ œ ๋ณด์•ˆ ๋‹ด๋‹น์ž๋Š” ๊ทธ๊ฒƒ์ด ์ข‹์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‚˜๋Š” ๊ณ ๊ฐ์—๊ฒŒ ์ œ๊ณตํ•  ์ƒ๊ฐ์ด ์ „ํ˜€ ์—†๋Š” ๊ฒƒ์„ ๋งค์ผ ๊ณต์ฆ์„ ์œ„ํ•ด ์ œ์ถœํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋‹จ์ˆœํ•œ ํ…Œ์ŠคํŠธ ์ด์ƒ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์Šน์ธ๋œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž๊ฒฉ ์ฆ๋ช…์€ ์ด์ œ ๋‚ด ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ผ๋ถ€์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž๊ฒฉ ์ฆ๋ช… ์œ„๋ฐ˜์— ๋Œ€ํ•œ ๋ณด์•ˆ ๋…ธ์ถœ ์˜์—ญ์ด ๋” ํฝ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ํ…Œ์ŠคํŠธ ๋ชฉ์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋์ ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

@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๋กœ๋ถ€ํ„ฐ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

{ "์‹ฌ๊ฐ๋„": "์˜ค๋ฅ˜", "์ฝ”๋“œ": null, "๊ฒฝ๋กœ": "/jre/Contents/MacOS/libjli.dylib", "message": "๋ฐ”์ด๋„ˆ๋ฆฌ ์„œ๋ช…์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.", "docUrl": null, "architecture": "x86_64" }

libjli.dylib์— ์„œ๋ช…์ด ์—†๋‹ค๊ณ  ๋‚˜์™€ ์žˆ์ง€๋งŒ ๋งํฌ ํŒŒ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ๋˜ํ•œ์ด ๋ช…๋ น์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค

ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ - OpenJDK8U-jre_x64_mac_openj9_macosXL_8u252b09_openj9-0.20.0.tar.gz* jdk8u252-b09-jre-j9 ํด๋”์— ์••์ถ•์„ ํ’€๊ณ  ์„œ๋ช… ํ™•์ธ -

codesign -vvvv jdk8u252-b09-jre-j9jdk8u252-b09-jre-j9/: ์ฝ”๋“œ์— ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์ง€๋งŒ ์„œ๋ช…์€ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋‘˜ ๋‹ค ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰