在 Mac OSX Sierra、运行 box 上安装 Ortus Commandbox 导致错误和异常

Installing Ortus Commandbox on Mac OSX Sierra, running box results in errors and exceptions

我尝试通过下载也包含 JRE 的 zip 文件从 Ortus 安装 Commandbox。它位于我的 Mac 运行 OSX Sierra 的下载文件夹中。我解压缩并尝试 运行 框。它首先初始化东西,然后 运行 没问题。

安装提示在这里:https://ortus.gitbooks.io/commandbox-documentation/content/setup/installation.html 建议将 box binary 放在 /usr/bin 中。我试过了但做不到。我什至尝试使用 sudo 对其进行 mv,但它说我不被允许。

所以我决定使用 Homebrew 安装方法。我安装了自制软件。安装完成后,我然后 运行 "brew install commandbox"。它完成确定。然后我输入 "which box" 看看它会找到哪个,我的下载目录中的那个还是另一个。它显示它在 /usr/local/bin/box 中。好像还可以。

我接着运行框。它崩溃并燃烧!

$ box
java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at cliloader.LoaderCLIMain.execute(LoaderCLIMain.java:205)
    at cliloader.LoaderCLIMain.main(LoaderCLIMain.java:705)
Caused by: java.lang.NoClassDefFoundError: sun/misc/VM
    at lucee.commons.collection.Hashing.randomHashSeed(Hashing.java:263)
    at lucee.commons.collection.HashMapPro.<init>(HashMapPro.java:195)
    at lucee.commons.collection.HashMapPro.<init>(HashMapPro.java:236)
    at lucee.commons.collection.LinkedHashMapPro.<init>(LinkedHashMapPro.java:70)
    at lucee.runtime.type.StructImpl.<init>(StructImpl.java:82)
    at lucee.runtime.type.StructImpl.<init>(StructImpl.java:68)
    at lucee.runtime.type.scope.ScopeSupport.<init>(ScopeSupport.java:85)
    at lucee.runtime.type.scope.ArgumentImpl.<init>(ArgumentImpl.java:67)
    at lucee.runtime.PageContextImpl.<init>(PageContextImpl.java:263)
    at lucee.runtime.CFMLFactoryImpl.getPageContextImpl(CFMLFactoryImpl.java:154)
    at lucee.runtime.CFMLFactoryImpl.getLuceePageContext(CFMLFactoryImpl.java:140)
    at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:435)
    at lucee.runtime.engine.CFMLEngineImpl.cli(CFMLEngineImpl.java:760)
    at lucee.loader.engine.CFMLEngineWrapper.cli(CFMLEngineWrapper.java:267)
    at luceecli.CLIMain.run(CLIMain.java:223)
    ... 6 more
Caused by: java.lang.ClassNotFoundException: sun.misc.VM
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
    at lucee.loader.classloader.LuceeClassLoader.loadClass(LuceeClassLoader.java:173)
    at lucee.loader.classloader.LuceeClassLoader.loadClass(LuceeClassLoader.java:138)
    ... 21 more
Cause:
java.lang.NoClassDefFoundError: sun/misc/VM
    at lucee.commons.collection.Hashing.randomHashSeed(Hashing.java:263)
    at lucee.commons.collection.HashMapPro.<init>(HashMapPro.java:195)
    at lucee.commons.collection.HashMapPro.<init>(HashMapPro.java:236)
    at lucee.commons.collection.LinkedHashMapPro.<init>(LinkedHashMapPro.java:70)
    at lucee.runtime.type.StructImpl.<init>(StructImpl.java:82)
    at lucee.runtime.type.StructImpl.<init>(StructImpl.java:68)
    at lucee.runtime.type.scope.ScopeSupport.<init>(ScopeSupport.java:85)
    at lucee.runtime.type.scope.ArgumentImpl.<init>(ArgumentImpl.java:67)
    at lucee.runtime.PageContextImpl.<init>(PageContextImpl.java:263)
    at lucee.runtime.CFMLFactoryImpl.getPageContextImpl(CFMLFactoryImpl.java:154)
    at lucee.runtime.CFMLFactoryImpl.getLuceePageContext(CFMLFactoryImpl.java:140)
    at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:435)
    at lucee.runtime.engine.CFMLEngineImpl.cli(CFMLEngineImpl.java:760)
    at lucee.loader.engine.CFMLEngineWrapper.cli(CFMLEngineWrapper.java:267)
    at luceecli.CLIMain.run(CLIMain.java:223)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at cliloader.LoaderCLIMain.execute(LoaderCLIMain.java:205)
    at cliloader.LoaderCLIMain.main(LoaderCLIMain.java:705)
Caused by: java.lang.ClassNotFoundException: sun.misc.VM
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
    at lucee.loader.classloader.LuceeClassLoader.loadClass(LuceeClassLoader.java:173)
    at lucee.loader.classloader.LuceeClassLoader.loadClass(LuceeClassLoader.java:138)
    ... 21 more

我不知道现在该怎么做才能解决这个问题。

我怀疑当我从“下载”文件夹中 运行 框时它可能弄乱了东西,没有意识到它会初始化东西。我删除了包含 box 二进制文件和 JRE 文件夹的下载版本并清空了回收站。

关于如何立即启动 Commandbox 和 运行 有什么建议吗?

我刚刚进行了一些本地测试,并确认您使用的是 Java 9,CommandBox 目前不支持该版本。修复很简单,您可以将 Java 9 安装为您 PC 的主要 JVM。您需要做的是将您之前下载的 JRE 文件夹,或者只下载 Java 8 的服务器版本并将文件夹重命名为 JRE。然后将该文件夹放在与 box 二进制文件相同的目录中。

当 CommandBox 首次启动时,它会检查同一文件夹中是否有名为 JRE 的文件夹,如果有则使用它。如果找不到该文件夹​​,则会回退到您的操作系统已安装的 Java 通用版本。

由于 Java 9 在野外出现得更多,我将了解如何将其检查放入 CommandBox 以提醒人们使用更有用的消息。我们已经进行了类似的检查,但它只查找 Java 小于 7 的版本。