【问题标题】:Clojure and Clojure Applications don't compile with IBM SDK while compile with SUN's JREClojure 和 Clojure 应用程序在使用 SUN 的 JRE 编译时不使用 IBM SDK 进行编译
【发布时间】:2013-06-27 17:07:13
【问题描述】:

我正在尝试将 clojure 应用程序从 SUN JRE 上的 Tomcat 迁移到 IBM SDK 上的 WebSphere Application Server。该应用程序使用 SUN JRE 1.7 编译良好 (ANT),但使用 IBM 的 SDK 6、7 时抛出 NullPointerExceptions。

我怀疑 clojure 本身(v1.1 + contrib 1.1)并试图编译它。同样,clojure 是使用 SUN 的 JRE 编译的,但在 IBM 的 SDK 中停止使用 clojure defmacro。我使用 clojure 1.2 + contrib 1.2 得到了类似的结果。我不想超过 1.2 版,因为据我了解,那是 contrib 退休的时候,我怀疑这将是一个很大的重写,我怀疑会解决这个问题。

感谢任何建议。提前致谢。

【问题讨论】:

  • 你有抛出异常的行(或宏的名称)吗?
  • 在使用 IBM 的 SDK 时,您的 任何 clojure 代码是否会运行?
  • 感谢 Juan 和 Aurthur 回复我。编译在 core.clj, L2019, defmacro deseq 处停止。 Arthur,我无法使用 IBM 的 SDK 编译 clojure lib 或 clojure 代码,更不用说运行了 :-)

标签: clojure compilation


【解决方案1】:

我终于弄明白了。

问题出在 IBM JDK 版本 6(尽管 6 的某些版本可能没有问题)和 7 JIT 编译器。通过禁用 JIT(例如 JVM 参数中的 -Xnojit),我能够成功构建。

感谢大家的努力和支持。

============= 编辑 =============

从 Java 7 SR4 及更高版本开始修复了 JIT 问题。这是 WebSphere Application Server V8.5.5 附带的 SDK 7。

【讨论】:

    猜你喜欢
    • 2013-10-13
    • 1970-01-01
    • 2011-03-08
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多