7

I'm trying to run DynamoDB local on a MAC. The Amazon official blog says I have to download the jar file and run the following command:

$ java –Djava.library.path=. -jar DynamoDBLocal.jar

But I got the following error on MAC OS X terminal:

Error: Could not find or load main class –Djava.library.path=.

Wut? The command seams not to recognise the -D parameter.. why?

I'm also working on Linux (Fedora) and I never had any problem with it.

On MAC OS X, java -version gives me java version "1.8.0_11"

What could be the problem? (I don't know that much with java commands)


Edit 1: Thanks to @Swapnil, we can notice that there is a typo error on the Amazon blog, they used a wrong dash character (EN DASH unicode U+2013) for the -D argument. Note that the Amazon documentation (not the blog) does not have the typo error and also refers to an up-to-date binary.

Edit 2: With the correct dash, the argument is interpreted by java, but I still got a (different) error message during runtime:

SEVERE: [sqlite] SQLiteQueue[AKID_eu-west-1.db]: error running job queue com.almworks.sqlite4java.SQLiteException: [-91] cannot load library: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-x86_64 in java.library.path

I fixed it like that:

java -Djava.library.path=./DynamoDBLocal_lib/  -jar DynamoDBLocal.jar

It's now finally working... Amazon documentation have some problems..

Yves M.
  • 29,855
  • 23
  • 108
  • 144
  • You can see this play out in this other Stack Overflow answer, which also covers how to programatically set `java.library.path` if needed: http://stackoverflow.com/a/35353377/3679676 – Jayson Minard Feb 12 '16 at 03:03

4 Answers4

6

The below seems to work for me on my Mac OS X -

java -Djava.library.path=. -jar your_jar 

Well, the dash character you've used in –D seems to be a different character altogether. That's probably causing the problem.

Swapnil
  • 8,201
  • 4
  • 38
  • 57
  • 2
    Ohh!! Yeah thank you so much! On the [Amazon blog](http://aws.amazon.com/de/blogs/aws/dynamodb-local-for-desktop-development/), the dash used in –D is in fact a **EN DASH** (U+2013), that's why the argument has been misinterpreted. I've been driven crazy with this! Thank you! <3 – Yves M. Jul 23 '14 at 09:18
2

For Mac, it might work without -Djava.library.path option. Try the following command:

java -jar DynamoDBLocal.jar

Also, the link to the download in the blog does not point to the latest DynamoDB Local version. You can get the latest version from here. This link is also present in the AWS Documentation.

Thanks.

0

I had to change two things: set up -Djava.library.path=./DynamoDBLocal_lib/

and change the the library name from libsqlite4java-osx to libsqlite4java-osx-x86_64

Yves M.
  • 29,855
  • 23
  • 108
  • 144
Greg
  • 11
  • 2
0

Along with setting the -Djava.library.path=./DynamoDBLocal_lib/ I had to copy libsqlite4java-osx-10.4.jnilib to libsqlite4java-osx-x86_64.dylib.

Yves M.
  • 29,855
  • 23
  • 108
  • 144