vmfest
vmfest copied to clipboard
no vboxjxpcom in java.library.path
I'm trying to follow the Pallet tutorial with vmfest.
(defproject pham "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.7.0"]]
:main ^:skip-aot pham.core
:target-path "target/%s"
:aliases {"pallet" ["with-profile" "+pallet" "pallet"]
"pallet-repl" ["with-profile" "+pallet" "repl"]}
:profiles
{:pallet
{:dependencies [[com.palletops/pallet "0.8.5"]
;; slf4j configuration (for pallet)
[org.slf4j/slf4j-api "1.6.4"]
[ch.qos.logback/logback-classic "1.0.1"]
;; Local vmfest
[com.palletops/pallet-vmfest "0.4.0-alpha.1"]
[org.clojars.tbatchelli/vboxjxpcom "4.3.4"]
;; Cloud providers
[org.apache.jclouds/jclouds-allblobstore "1.7.2"]
[org.apache.jclouds/jclouds-allcompute "1.7.2"]]
:plugins [[com.palletops/pallet-lein "0.8.0-alpha.1"]]
:jvm-opts ["-Dvbox.home=/Applications/VirtualBox.app/Contents/MacOS"]}
:uberjar {:aot :all}})
REPL session:
lvh@zygalski ~/P/o/pham> lein pallet-repl 10:24:44
nREPL server started on port 62318 on host 127.0.0.1 - nrepl://127.0.0.1:62318
REPL-y 0.3.7, nREPL 0.2.10
Clojure 1.7.0
Java HotSpot(TM) 64-Bit Server VM 1.8.0_40-b25
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
Results: Stored in vars *1, *2, *3, an exception in *e
pham.core=> (require '[pallet.compute :refer [instantiate-provider]])
nil
pham.core=> (def vmfest (instantiate-provider "vmfest"))
10:25:14.024 [nREPL-worker-0] DEBUG pallet.compute.vmfest.properties - The vbox.home system property supplied as /Applications/VirtualBox.app/Contents/MacOS
WARNING: cat already refers to: #'clojure.core/cat in namespace: pallet.script.lib, being replaced by: #'pallet.script.lib/cat
WARNING: cat already refers to: #'clojure.core/cat in namespace: pallet.ssh.node-state.state-root, being replaced by: #'pallet.script.lib/cat
10:25:18.302 [nREPL-worker-0] INFO pallet.compute.vmfest - This VMFest provider is already configured to use XPCOM.
10:25:18.303 [nREPL-worker-0] DEBUG pallet.compute.vmfest.service - Loading images from /Users/lvh/.vmfest/models
10:25:18.303 [nREPL-worker-0] DEBUG pallet.compute.vmfest.service - Loaded images null
CompilerException java.lang.UnsatisfiedLinkError: no vboxjxpcom in java.library.path, compiling:(form-init770335275326457638.clj:1:13)
pham.core=> (def vmfest (instantiate-provider "vmfest" nil nil))
10:25:21.786 [nREPL-worker-0] INFO pallet.compute.vmfest - This VMFest provider is already configured to use XPCOM.
10:25:21.786 [nREPL-worker-0] DEBUG pallet.compute.vmfest.service - Loading images from /Users/lvh/.vmfest/models
10:25:21.786 [nREPL-worker-0] DEBUG pallet.compute.vmfest.service - Loaded images null
CompilerException java.lang.UnsatisfiedLinkError: no vboxjxpcom in java.library.path, compiling:(form-init770335275326457638.clj:1:13)
I already added [org.clojars.tbatchelli/vboxjxpcom "4.3.4"] even though the tutorial didn't ask me to, because otherwise lein deps :tree didn't show vboxjxpcom at all, and I had the same error.
I'm guessing this is a series of version incompatibilities?
After banging my head against this for a while, I got it to work. You also need to add the vbox.home folder to java.library.path.
These are the jvm opts that got me past the compile error on Mac OSX:
:jvm-opts ["-Dvbox.home=/Applications/VirtualBox.app/Contents/MacOS"
"-Djava.library.path=%PATH%:/Applications/VirtualBox.app/Contents/MacOS"]