【问题标题】:NoClassDefFoundError and NullPointerException when opening a project with PhpStorm on OS X Sierra在 OS X Sierra 上使用 PhpStorm 打开项目时出现 NoClassDefFoundError 和 NullPointerException
【发布时间】:2017-10-13 04:43:45
【问题描述】:

最近在我的Mac Pro(Sierra 10.12.6)上安装了PhpStorm 2017.2.4,Java版本是(9+181)。

每当我尝试打开一个项目时,PhpStorm 都会挂起。 我查看了位于/Library/Logs/PhpStorm2017.2 的日志文件。 发生了几个 NoClassDefFoundError,其中有一部分 NullPointerException。 以下是一些摘录:

java.lang.NoClassDefFoundError: com/apple/eawt/AppEvent$AboutEvent
java.lang.NoClassDefFoundError: com/apple/eawt/OpenURIHandler
java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
java.lang.NoClassDefFoundError: Could not initialize class com.intellij.credentialStore.kdbx.KdbxKt
java.lang.NullPointerException at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.b(ToolWindowManagerImpl.java:1800)
java.lang.NullPointerException at com.intellij.codeInsight.daemon.impl.DaemonListeners$MyProfileChangeListener.a(DaemonListeners.java:519)
  • 我尝试在 PhpStorm 包内的 info.plist 配置文件中更改目标 java 版本。
  • 我还关注了these instructions,以便能够启动应用程序。
  • 只是为了检查一下,我还安装了 Webstorm,它开箱即用。

在做了一些研究之后,似乎没有其他人遇到这个问题。我真的需要一些灵感,一些疯狂的想法来尝试。

PS:我上传了日志文件here,如果有人想涉水的话。

【问题讨论】:

  • "Java 版本是 (9+181)" AFAIK PhpStorm 应该使用自己捆绑的 JDK .. 应该是 v8。这就是我在 Windows PC 上看到的 Help | About(是的,不同的操作系统,但仍然如此):JRE: 1.8.0_152-release-915-b11 amd64JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o。所以.. 尝试使用捆绑的 JDK/Java 版本。
  • @LazyOne:我也是这么想的。但是在我安装 JDK 之前,PhpStorm 甚至无法启动。它找不到 libjava.dylib。其实这给了我一个想法。

标签: java php macos phpstorm java-9


【解决方案1】:

找到了更好的解决方案,你可以用homebrew安装PhpStorm

homebrew cask install phpstorm

工作就像一个魅力。

我将保留旧答案,以防万一有人需要此类信息。

Ooookay,我搞定了。但这并不漂亮。

所以由于某种原因,PhpStorm 无法使用自己捆绑的 JDK。它正在尝试使用系统的默认 JDK,对我来说是 Java 9。

因此我做了一些极端的事情,我将系统JDK中的lib文件夹替换为指向Phpstorm.app包内的jre lib文件夹的符号链接

sudo ln -s /Applications/PhpStorm.app/Contents/jdk/Contents/Home/jre/lib /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/lib

不用说,如果你有其他应用程序使用系统的JDK,你应该不使用这种方法。

感谢 LazyOne,他的评论给了我“啊哈!”时刻。

PS:如果有人需要此信息,我还必须将执行权限授予fsnotifier,以便能够在 IDE 中浏览文件

chmod 744 /Applications/PhpStorm.app/Contents/bin/fsnotifier

【讨论】:

    【解决方案2】:

    我在将运行它的 jdk 升级到 11 时使用 Intelli-J。

    我按照此处的说明将其运行的 jdk 改回了 8:

    https://intellij-support.jetbrains.com/hc/en-us/articles/206544879-Selecting-the-JDK-version-the-IDE-will-run-under

    配置文件位置可能也需要此链接

    https://intellij-support.jetbrains.com/hc/en-us/articles/206544519

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 2017-05-14
      相关资源
      最近更新 更多