Temurin-build: ๊ธ€๊ผด ๊ตฌ์„ฑ ๋ˆ„๋ฝ์œผ๋กœ ์ธํ•œ install4j ์‚ฌ์šฉ์‹œ sun.awt.FontConfiguration.getVersion (FontConfiguration.java:1264)์˜ NPE

์— ๋งŒ๋“  2018๋…„ 10์›” 29์ผ  ยท  22์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: adoptium/temurin-build

์•ˆ๋…•,
์šฐ๋ฆฌ ํŒ€์€ ๋‹ค์–‘ํ•œ Linux ๋ฐฐํฌํŒ์˜ install4j์—์„œ NPE ๋ฌธ์ œ์— ๋ถ€๋”ช ํ˜”์Šต๋‹ˆ๋‹ค. (Ubuntu, Centos, Debian ๋“ฑ)
JDK ๋ฒ„์ „ : jdk8u181-b13

installer4j๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œํ’ˆ์„ ์„ค์น˜ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด fontconfig, ์Šคํƒ ์ถ”์  ๋ˆ„๋ฝ์œผ๋กœ ์ธํ•ด null ํฌ์ธํ„ฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264) at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219) at sun.awt.FontConfiguration.init(FontConfiguration.java:107) at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774) at sun.font.SunFontManager$2.run(SunFontManager.java:431) at java.security.AccessController.doPrivileged(Native Method) at sun.font.SunFontManager.<init>(SunFontManager.java:376) at sun.awt.FcFontManager.<init>(FcFontManager.java:35) at sun.awt.X11FontManager.<init>(X11FontManager.java:57) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at java.lang.Class.newInstance(Class.java:442) at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83) at java.security.AccessController.doPrivileged(Native Method) at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74) at sun.font.SunFontManager.getInstance(SunFontManager.java:250) at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:264) at sun.swing.SwingUtilities2.getFontMetrics(SwingUtilities2.java:1113) at javax.swing.JComponent.getFontMetrics(JComponent.java:1626) at javax.swing.text.WrappedPlainView.updateMetrics(WrappedPlainView.java:318) at javax.swing.text.WrappedPlainView.updateChildren(WrappedPlainView.java:297) at javax.swing.text.WrappedPlainView.insertUpdate(WrappedPlainView.java:463) at javax.swing.plaf.basic.BasicTextUI$RootView.insertUpdate(BasicTextUI.java:1610) at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.insertUpdate(BasicTextUI.java:1869) at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:201) at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:748) at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:707) at javax.swing.text.PlainDocument.insertString(PlainDocument.java:130) at javax.swing.text.DefaultEditorKit.read(DefaultEditorKit.java:273) at javax.swing.JEditorPane.setText(JEditorPane.java:1416) at javax.swing.JEditorPane.<init>(JEditorPane.java:290) at com.install4j.runtime.installer.frontend.headless.AbstractHeadlessScreenExecutor.init(AbstractHeadlessScreenExecutor.java:68) at com.install4j.runtime.installer.frontend.headless.ConsoleScreenExecutor.<init>(ConsoleScreenExecutor.java:24) at com.install4j.runtime.installer.frontend.headless.InstallerConsoleScreenExecutor.<init>(InstallerConsoleScreenExecutor.java:6) at com.install4j.runtime.installer.Installer.getScreenExecutor(Installer.java:88) at com.install4j.runtime.installer.Installer.runInProcess(Installer.java:57) at com.install4j.runtime.installer.Installer.main(Installer.java:45) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:85) at com.install4j.runtime.launcher.UnixLauncher.main(UnixLauncher.java:62)

ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” ๊ธ€๊ผด ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
apt install fontconfig

๊ทธ๋Ÿฌ๋‚˜์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ณ ๊ฐ์ด Oracle jdk์—์„œ AdoptOpenJDK๋กœ ์ „ํ™˜ ํ•  ๋•Œ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๋ฉฐ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ€์ด JDK์— ๊ธ€๊ผด ๊ตฌ์„ฑ์„ ๋ฒˆ๋“ค๋กœ ์ œ๊ณตํ•˜๊ณ  ์ถ”๊ฐ€ ๋ฒ„์ „์—์„œ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฑด๋ฐฐ,

๋ฐฐํฌ : jdk8u181-b13 Linux x64

bug x-linux

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

CentOS 6 ๋ฐ 7์— fontconfig ๋ฐ urw-fonts ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

ํฐ ์†Œ๋ฆฌ๋กœ ์ƒ๊ฐํ•˜๋ฉด์ด ๋ฌธ์ œ๋Š” Java 11 ๋˜๋Š” 8u ํ”„๋กœ์ ํŠธ์— ํŒจ์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์ด ์ง€์›์„ ๋ฐฑ ํฌํŠธํ•˜๊ธฐ ์œ„ํ•ด ์—…์ŠคํŠธ๋ฆผ์œผ๋กœ ์ด๋™ํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ ๋ฌธ์ œ ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@karianna ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด JEditorPane.setText() ๋ถ€ํŠธ ์ŠคํŠธ๋žฉํ•˜๊ณ ์ด ์ฝ”๋“œ ๊ฒฝ๋กœ๋ฅผ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค.

java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264) at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219) at sun.awt.FontConfiguration.init(FontConfiguration.java:107) at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774) at 

Adopt OpenJDK๊ฐ€ ์ œ๊ณตํ•ด์•ผํ•˜๋Š” ๊ธ€๊ผด ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Java 11์—์„œ 8u ํ”„๋กœ์ ํŠธ๋กœ ๋ฐฑ ํฌํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

ํฐ ์†Œ๋ฆฌ๋กœ ์ƒ๊ฐํ•˜๋ฉด์ด ๋ฌธ์ œ๋Š” Java 11 ๋˜๋Š” 8u ํ”„๋กœ์ ํŠธ์— ํŒจ์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์ด ์ง€์›์„ ๋ฐฑ ํฌํŠธํ•˜๊ธฐ ์œ„ํ•ด ์—…์ŠคํŠธ๋ฆผ์œผ๋กœ ์ด๋™ํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ ๋ฌธ์ œ ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @karianna ์˜๊ฒฌ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‹จ๊ธฐ (์ฃผ) ๋˜๋Š” ์žฅ๊ธฐ (๊ฐœ์›”)์™€ ๊ฐ™์ด์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ์ผ์ •์ด ์žˆ์Šต๋‹ˆ๊นŒ?
์ด ์ •๋ณด๋Š” ๊ณ ๊ฐ ์ง€์›์„ ๊ณ„ํšํ•˜๊ณ  ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค.

์ด ๋‹จ๊ณ„์—์„œ๋Š” ์•„๋งˆ๋„ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

FontConfiguration์˜ NullPointerException์ž…๋‹ˆ๋‹ค. java : 1264 ๋Š” Linux ๋ฒ„์ „์˜ AdoptOpenJDK์— ํฌํ•จ๋˜์ง€ ์•Š์€ ๊ธ€๊ผด ๊ตฌ์„ฑ ํŒŒ์ผ ๋ˆ„๋ฝ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์™ธ์˜ ์ง์ ‘์ ์ธ ์›์ธ์€ ์‹ค์ œ ๊ธ€๊ผด ํŒŒ์ผ์ด ๋ˆ„๋ฝ ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ _configuration_ ํŒŒ์ผ์ด ๋ˆ„๋ฝ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

AWT ๊ธ€๊ผด ํ•˜์œ„ ์‹œ์Šคํ…œ์ด ์ดˆ๊ธฐํ™”๋˜๋ฉด ์—ฌ๊ธฐ์— ์„ค๋ช… ๋œ ์ด๋ฆ„ ์ง€์ • ์ฒด๊ณ„ ๋ฐ ์šฐ์„  ์ˆœ์œ„์— ๋”ฐ๋ผ $ JAVA_HOME / lib์—์„œ ๊ธ€๊ผด ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. https://docs.oracle.com/javase/8/docs/technotes/guides /intl/fontconfig.html

JDK์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธ€๊ผด์ด์—†๊ณ  OS ์ œ๊ณต ๊ธ€๊ผด์˜ ์‚ฌ์šฉ์ด ์˜๋„๋˜๊ฑฐ๋‚˜ ๊ตฌ์„ฑ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด AWT ๊ธ€๊ผด ํ•˜์œ„ ์‹œ์Šคํ…œ์— ์ตœ์†Œ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. $ JAVA_HOME / lib ์˜ fontconfig.properties ํŒŒ์ผ์— ๋‹ค์Œ ๋‘ ์ค„์„ ์ œ๊ณตํ•˜๋ฉด ์ตœ์†Œํ•œ NullPointerException ๋ฌธ์ œ๋ฅผ ์™„ํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

version=1
sequence.allfonts=default

_we_๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ•จ๊ป˜ ๋ฒˆ๋“ค๋กœ ์ œ๊ณต๋˜๋Š” ๊ธ€๊ผด ๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์šฐ๋ฆฌ ์ƒํ™ฉ์—์„œ ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ธ€๊ผด ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋‚˜์ค‘์— ๋ฌธ์ œ์—†์ด ํด๋ž˜์Šค ๊ฒฝ๋กœ์—์„œ ์ž์ฒด ๊ธ€๊ผด์„๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JDK์™€ ํ•จ๊ป˜ ๋ฒˆ๋“ค๋กœ ์ œ๊ณต๋˜๊ฑฐ๋‚˜ ์šด์˜ ์ฒด์ œ์—์„œ ์ œ๊ณตํ•˜๋Š” ์‹ค์ œ ๊ธ€๊ผด์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด JDK์— ์˜์กดํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ ค๊ณ ํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๊ณ  YMMV๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

fontconfig 2 : 2.13.1 (์•„์น˜ ๋ฆฌ๋ˆ…์Šค์—์„œ)๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. fontconfig ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ˆ˜๋™์œผ๋กœ๋กœ๋“œํ•˜๋ ค๊ณ ํ–ˆ๋Š”๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: /usr/lib/libfontconfig.so.1.12.0: /usr/lib/libfontconfig.so.1.12.0: undefined symbol: FT_Done_MM_Var
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    ...

ํฌํ•จ ๋œ jre/lib/amd64/libfreetype.so.6 ๊ฐ€ ์‹œ์Šคํ…œ fontconfig์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. jre/lib/amd64/libfreetype.so.6 ์ œ๊ฑฐํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@jarnbjo ์†”๋ฃจ์…˜์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. FontConfiguration์˜ NullPointerException ๋ฌธ์ œ๋ฅผ ์™„ํ™” ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. alphine Linux์˜ java : 1264

ํ˜„์žฌ ์ง๋ฉด

Caused by: java.lang.NullPointerException: null
hub_1           |   at sun.awt.FcFontManager.getDefaultPlatformFont(FcFontManager.java:76)
hub_1           |   at sun.font.SunFontManager$2.run(SunFontManager.java:433)
hub_1           |   at java.security.AccessController.doPrivileged(Native Method)
hub_1           |   at sun.font.SunFontManager.<init>(SunFontManager.java:376)
hub_1           |   at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
hub_1           |   at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
hub_1           |   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
hub_1           |   at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
hub_1           |   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
hub_1           |   at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
hub_1           |   at java.lang.Class.newInstance(Class.java:442)
hub_1           |   at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
hub_1           |   at java.security.AccessController.doPrivileged(Native Method)
hub_1           |   at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
hub_1           |   at sun.java2d.SunGraphicsEnvironment.getFontManagerForSGE(SunGraphicsEnvironment.java:190)
hub_1           |   at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:224)
hub_1           |   at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:252)
hub_1           |   at sun.java2d.HeadlessGraphicsEnvironment.getAvailableFontFamilyNames(HeadlessGraphicsEnvironment.java:94)
hub_1           |   at net.sf.jasperreports.engine.util.JRGraphEnvInitializer.initializeGraphEnv(JRGraphEnvInitializer.java:57)

๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!
๋ฐฐํฌ : jdk8u202-b08 Linux x64

CentOS 6 ๋ฐ 7์— fontconfig ๋ฐ urw-fonts ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @ keertz04 ์†Œ์Šค ์ฝ”๋“œ๋กœ ๋””๋ฒ„๊น… ํ•  ๋•Œ๋„ ๊ฐ™์€ ์ผ์„ ๊ฒฝํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค. fontconfig.properties๋ฅผ ์ œ๊ณตํ•˜๋ฉด FontConfiguration์—์„œ NPE๋ฅผ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์‹œ์Šคํ…œ ๊ธ€๊ผด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์—ฌ์ค€๋Œ€๋กœ ๋˜ ๋‹ค๋ฅธ NPE๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์œผ๋ฉฐ ๊ธฐ๋ณธ ํ”Œ๋žซํผ ๊ธ€๊ผด์„ ๊ฐ€์ ธ ์˜ค๋ ค๊ณ ํ•˜๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
ํ˜„์žฌ๋Š” ์—ฌ์ „ํžˆ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ fontconfig ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

install4j๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์ตœ์‹  ๋ฆด๋ฆฌ์Šค 7.0.9์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
Added a workaround for an InternalError when a bundled JRE could not find fonts on Linux
https://www.ej-technologies.com/download/install4j/changelog.html

์šฐ๋ฆฌ ํŒ€์€์ด ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ์ฃผ์˜ ํ•  ๊ฐ€์น˜๊ฐ€์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

fontconfig ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์œ„ํ•ด +1ํ•˜๊ณ  fontconfig.properties๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. (jdk8u202-b08)

@ xinyi9 install4j ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ์™€ ์ž˜
java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264) at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219) at sun.awt.FontConfiguration.init(FontConfiguration.java:107) at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774) at sun.font.SunFontManager$2.run(SunFontManager.java:431) ..... at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:85) at com.install4j.runtime.launcher.UnixLauncher.main(UnixLauncher.java:62)

์ด๊ฒƒ์€ jdk8u192-b12๋ฅผ ์‚ฌ์šฉํ•˜๋Š” x86_64 Clearlinux 4.14.21-380.lts์— ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ง๋ฉด

```
์›์ธ : java.lang.NullPointerException : null
hub_1 | sun.awt.FcFontManager.getDefaultPlatformFont (FcFontManager.java:76)
hub_1 | sun.font.SunFontManager $ 2.run (SunFontManager.java:433)

@ keertz04 ๋Š” fontconfig๋ฅผ ์„ค์น˜ํ•˜๊ณ  fontconfig.properties๋ฅผ ์ถ”๊ฐ€ ํ•œ ํ›„ ๋‚˜์—๊ฒŒ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ๊ณ ์‚ฐ์—์„œ ๊ณ ์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

adoptopenjdk/openjdk11-openj9:jdk-11.0.7_10_openj9-0.20.0-alpine-slim
๋‚˜๋Š” ๋‹จ์ง€ ์‹คํ–‰ํ•ด์•ผํ–ˆ๋‹ค.
apk add --no-cache fontconfig ttf-dejavu

Ubuntu 16.04 ์„œ๋ฒ„์— fontconfig ๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ fontconfig.properties ์„ ์ถ”๊ฐ€ ํ•  ํ•„์š”

$ sudo apt-get install fontconfig
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  fontconfig-config fonts-dejavu-core libfontconfig1
The following NEW packages will be installed:
  fontconfig fontconfig-config fonts-dejavu-core libfontconfig1
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/1398 kB of archives.
After this operation, 4490 kB of additional disk space will be used.

fonts-dejavu-core ๋„ ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ ์—†์ด๋Š” ๋˜ ๋‹ค๋ฅธ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

JRE 11 ์‚ฌ์šฉ (์˜ˆ, JDK๊ฐ€ ์•„๋‹Œ JRE ๋‹ค์šด๋กœ๋“œ) :

$ java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.7+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.7+10, mixed mode)

์ด๋ฏธ์ง€๋ฅผ java : 8๋กœ ๋Œ€์ฒดํ•˜์‹ญ์‹œ์˜ค

Red Hat 7.7์—์„œ๋Š” ์ฒ˜์Œ์—๋Š” ๊ธฐ์จ์—†์ด fontconfig.properties ์ƒ์„ฑ์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.
fontconfig๋ฅผ ์„ค์น˜ํ–ˆ์ง€๋งŒ urw-fonts๋Š” ์„ค์น˜ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋Œ€์ฒด ํŒจํ‚ค์ง€ urw-base35-fonts๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Red Hat 7.7์—์„œ๋Š” ์ฒ˜์Œ์—๋Š” ๊ธฐ์จ์—†์ด fontconfig.properties ์ƒ์„ฑ์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.
fontconfig๋ฅผ ์„ค์น˜ํ–ˆ์ง€๋งŒ urw-fonts๋Š” ์„ค์น˜ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋Œ€์ฒด ํŒจํ‚ค์ง€ urw-base35-fonts๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”,

์ €์—๊ฒŒ๋Š” ๋น ์ง„ fontconfig๋ฅผ ์„ค์น˜ํ•˜๊ณ  $ JAVA_HOME / lib์—์„œ ์•ž์„œ ์–ธ๊ธ‰ ํ•œ fontconfig.properties๋ฅผ ์†Œ๊ฐœํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ํ™˜๊ฒฝ :
OpenJDK ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ AdoptOpenJDK (๋นŒ๋“œ 14.0.1 + 7)
fontconfig-2.13.0-4.3.el7.x86_64

@jarnbjo ์†”๋ฃจ์…˜์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. FontConfiguration์˜ NullPointerException ๋ฌธ์ œ๋ฅผ ์™„ํ™” ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. alphine Linux์˜ java : 1264

ํ˜„์žฌ ์ง๋ฉด

Caused by: java.lang.NullPointerException: null
hub_1           |     at sun.awt.FcFontManager.getDefaultPlatformFont(FcFontManager.java:76)
hub_1           |     at sun.font.SunFontManager$2.run(SunFontManager.java:433)
hub_1           |     at java.security.AccessController.doPrivileged(Native Method)
hub_1           |     at sun.font.SunFontManager.<init>(SunFontManager.java:376)
hub_1           |     at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
hub_1           |     at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
hub_1           |     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
hub_1           |     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
hub_1           |     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
hub_1           |     at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
hub_1           |     at java.lang.Class.newInstance(Class.java:442)
hub_1           |     at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
hub_1           |     at java.security.AccessController.doPrivileged(Native Method)
hub_1           |     at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
hub_1           |     at sun.java2d.SunGraphicsEnvironment.getFontManagerForSGE(SunGraphicsEnvironment.java:190)
hub_1           |     at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:224)
hub_1           |     at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:252)
hub_1           |     at sun.java2d.HeadlessGraphicsEnvironment.getAvailableFontFamilyNames(HeadlessGraphicsEnvironment.java:94)
hub_1           |     at net.sf.jasperreports.engine.util.JRGraphEnvInitializer.initializeGraphEnv(JRGraphEnvInitializer.java:57)

๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!
๋ฐฐํฌ : jdk8u202-b08 Linux x64

์•ˆ๋…•ํ•˜์„ธ์š”,์ด github ์Šค๋ ˆ๋“œ๋ฅผ๋ณด๊ณ  ๋ฐค์„ ํ–‰๋ณตํ•˜๊ฒŒ ๋งŒ๋“ค ๋•Œ๊นŒ์ง€ ๋ฉฐ์น ์„ ๊ณ ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/corretto/corretto-11/issues/124#issuecomment -675629775

Linux ๋ฒ„์ „ AdoptOpenJDK / openjdk-support # 70์—๋Š” ๊ธ€๊ผด์ด ์—†์Šต๋‹ˆ๋‹ค.

adoptopenjdk/openjdk11-openj9:jdk-11.0.7_10_openj9-0.20.0-alpine-slim
๋‚˜๋Š” ๋‹จ์ง€ ์‹คํ–‰ํ•ด์•ผํ–ˆ๋‹ค.
apk add --no-cache fontconfig ttf-dejavu

Docker ์ปจํ…Œ์ด๋„ˆ๊ฐ€ openjdk : 8-jre-alpine ์œ„์— ๋นŒ๋“œ ๋œ ๊ฒฝ์šฐ์—๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค

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