Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sun.awt.X11FontManager:java.lang.reflect.InvocationTargetException(Arch Linux)_Java_Fonts_Dependencies_Awt_Archlinux Arm - Fatal编程技术网

sun.awt.X11FontManager:java.lang.reflect.InvocationTargetException(Arch Linux)

sun.awt.X11FontManager:java.lang.reflect.InvocationTargetException(Arch Linux),java,fonts,dependencies,awt,archlinux-arm,Java,Fonts,Dependencies,Awt,Archlinux Arm,我有一个信息亭程序,可以在屏幕上写一些文字。它在我的Ubuntu18笔记本电脑和运行Raspbian的Raspberry Pi 3b上运行良好。为了减少开销,我在Raspberry Pi 3b上使用Arch Linux,只运行X.org(+xterm)来启动我的程序。但在没有任何可用信息的情况下,它会失败: java.io.IOException:读取字体数据时出现问题。 在java.desktop/java.awt.Font.createFont0(Font.java:1177) 在java.

我有一个信息亭程序,可以在屏幕上写一些文字。它在我的Ubuntu18笔记本电脑和运行Raspbian的Raspberry Pi 3b上运行良好。为了减少开销,我在Raspberry Pi 3b上使用Arch Linux,只运行X.org(+xterm)来启动我的程序。但在没有任何可用信息的情况下,它会失败:

java.io.IOException:读取字体数据时出现问题。
在java.desktop/java.awt.Font.createFont0(Font.java:1177)
在java.desktop/java.awt.Font.createFont(Font.java:1046)
at code.Frame.(Frame.java:146)
位于code.Main.Main(Main.java:58)

机器正在运行
jre openjdk 13
,字体是从JAR加载的

我已经尝试将
java.io.tmpdir
更改为一个绝对可写的目录。我还将所有文件都小写

基本结构是:

  • 代码
    • 主要
    • 框架
  • 资源
    • roboto_bold.ttf
这是我的代码:

Font.createFont(Font.TRUETYPE_FONT, Main.class.getResourceAsStream("/resources/roboto_bold.ttf"))
知道问题是什么吗?知道我如何调试它吗

更新:

我已经开始使用IntelliJ远程调试调用。通过这种方式,我可以创建stacktrace:

java.lang.reflect.InvocationTargetException
位于java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
位于java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
位于java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
在java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
位于java.base/java.security.AccessController.doPrivileged(AccessController.java:312)
位于java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
在java.desktop/java.awt.Font.createFont0(Font.java:1139)
在java.desktop/java.awt.Font.createFont(Font.java:1046)
at code.Frame.(Frame.java:146)
at code.Main.Main(Main.java:58)


我想这意味着
sun.awt.X11FontManager
不存在。但我不知道如何解决这个问题。似乎是一个依赖性问题,但安装了
extra/fontconfig 2:2.13.91
extra/freetype2.10.1

您需要一个类似以下的结构:

src:
   com.company
     Main.java
   resources
     roboto_bold.ttf

您需要一个类似以下的结构:

src:
   com.company
     Main.java
   resources
     roboto_bold.ttf

似乎字体的位置是个问题…似乎字体的位置是个问题…给定的结构在
src
目录中(本可以更清楚)。它在Ubuntu18中工作。所以这似乎是一些依赖于平台的问题。Ups,我错过了问题的这一部分。Ubuntu使用相同的JRE吗?事实上,它是一个java应用程序,应该能够解决平台问题(希望是这样),因为笔记本电脑正在使用Java11。是的,Java确实增加了很多可移植性,但它确实存在差距。我看到有人有这个问题,因为Windows上的路径不是casesenitive的,而是Linux上的路径。你也能在pi上匹配java 11吗?给定的结构在
src
目录中(本可以更清楚)。它在Ubuntu18中工作。所以这似乎是一些依赖于平台的问题。Ups,我错过了问题的这一部分。Ubuntu使用相同的JRE吗?事实上,它是一个java应用程序,应该能够解决平台问题(希望是这样),因为笔记本电脑正在使用Java11。是的,Java确实增加了很多可移植性,但它确实存在差距。我看到有人有这个问题,因为Windows上的路径不是casesentive,而是Linux上的路径。你能在pi上匹配java 11吗?