首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Clojure中使用Swing -编译器异常:无法初始化RepaintManager

在Clojure中使用Swing -编译器异常:无法初始化RepaintManager
EN

Stack Overflow用户
提问于 2019-03-27 15:33:24
回答 3查看 539关注 0票数 0

我刚刚开始尝试使用Swing创建一个使用Clojure的UI。但是当我尝试加载它时,我得到了一个CompilerException。我一直在遵循本教程'https://stuartsierra.com/2010/01/02/swing-into-actions-with-clojure‘。

我正在使用带有草书的IntelliJ IDEA社区,使用Leiningen和Clojure 1.8,我使用的是LinuxMint19.1(如果这很重要的话)。

我的代码:

代码语言:javascript
复制
(defn say-hello []
  (JOptionPane/showMessageDialog
    nil "Hello, World!" "Greeting" JOptionPane/INFORMATION_MESSAGE))

(def act (proxy [ActionListener] []
           (actionPerformed [event] (say-hello))))

(def button (doto (JButton. "Click Me!")
              (.addActionListener act)))

(def panel (doto (JPanel.)
             (.add button)))
(def frame (doto (JFrame. "Hello Frame")
             (.setSize 800 800)
             (.setContentPane panel)
             (.setVisible true)))


(def frame (doto (JFrame. "SportSeer")
             (.setSize 800 800)
             (.setVisible true)))

当浏览nREPL时,我得到:

代码语言:javascript
复制
Loading src/sportseer_client/core.clj... 
CompilerException java.lang.NoClassDefFoundError: Could not initialize class javax.swing.RepaintManager, compiling:(core.clj:12:13) 

编辑:另外,当我第一次重新启动REPL并加载文件时,我得到了以下错误:

代码语言:javascript
复制
Loading src/sportseer_client/core.clj... 
CompilerException java.awt.AWTError: Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper, compiling:(core.clj:12:13)

不知怎么的,当我在repl中乱搞的时候,这个示例就已经开始工作了,然后就能够从文件中加载,而不会出现任何问题。除了使用其他导入函数之外,不知道我做了什么不同的操作:

代码语言:javascript
复制
(import '(javax.swing JOptionPan JButton JFrame JPanel))

但我不能再复制这个让它起作用了。

任何帮助,指出我的正确方向,以解决这个问题,将非常感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-29 08:12:19

在使用CompilerException java.awt.AWTError: Assistive Technology not found 8在linux服务器上运行PDF生成代码(使用AWT)时,我看到了OpenJDK。在切换到JDK10/11之后,错误消失了。

图形相关代码可能存在很多“有趣”的问题,特别是当您在没有适当显示的服务器上运行时。

我知道,在这种情况下,我们在docker中运行阿尔卑斯Linux发行版时会出现CompilerException java.lang.NoClassDefFoundError: Could not initialize class错误--尽管它是一个不同的版本:java.lang.NoClassDefFoundError: Could not initialize class sun.awt.image.IntegerInterleavedRaster

在我们的例子中,它最终与fontconfig包相关。对于Apline:apk --update add ttf-dejavu

关于这个问题的更多信息:

票数 0
EN

Stack Overflow用户

发布于 2019-03-27 15:47:52

我认为这个问题是由于使用OpenJDK而不是OracleJDK造成的。自从将project更改为OracleJDK之后,我就不再有这个问题了,所以如果其他人将来有这个问题.这可能是解决办法。

票数 1
EN

Stack Overflow用户

发布于 2019-03-27 17:33:09

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55381014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档