vmfest icon indicating copy to clipboard operation
vmfest copied to clipboard

no vboxjxpcom in java.library.path

Open lvh opened this issue 10 years ago • 1 comments

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?

lvh avatar Oct 18 '15 08:10 lvh

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"]

noonian avatar Nov 12 '15 01:11 noonian