strange error: : Could not find or load main class –jar

2,204 views
Skip to first unread message

larry google groups

unread,
Jan 31, 2013, 1:06:26 PM1/31/13
to clo...@googlegroups.com
I wrote a small Clojure app (1.4) and then bundled it up with "lein uberjar". This app uses Ring and Jetty so it handles the webserver itself. 

On my local machine, a Macintosh, in the terminal, I can start it with:

java -jar kiosk.clj 30000

This works fine. 

I also moved to another server, running Centos, and I used "yum install" to install a JVM and then I again did: 

java -jar kiosk.clj 30000

and that worked fine.

Then I gave the app to the sysadmin, and he tried to spin it up on another server, and on startup he got the error:

Could not find or load main class –jar

What does this mean? 



larry google groups

unread,
Jan 31, 2013, 1:19:34 PM1/31/13
to clo...@googlegroups.com
This does not seem to apply:


"I suspect you're missing a :gen-class declaration in src/cljmx/core.clj."

But this is what I have:

(ns kiosks-clojure.core
  (:gen-class)
  (:import
   (java.net URL)
   (java.io ByteArrayInputStream)
   (org.apache.commons.mail SimpleEmail)
   (org.apache.commons.mail HtmlEmail)
   (java.text SimpleDateFormat))


Again, this worked fine on my local machine, and also on another server that the company gave me, but when I give it to the sysadmin, he gets the error. Perhaps this has something to do with the classpath? In the past, I was always the one to install the jvm, and I ran the uberjars from my directory. But maybe something needs to be made more specific for a sysadmin to run this in any directory they like? 

larry google groups

unread,
Jan 31, 2013, 1:22:20 PM1/31/13
to clo...@googlegroups.com
More info about my problem:

java version "1.7.0_11"

Java(TM) SE Runtime Environment (build 1.7.0_11-b21)

Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)

larry google groups

unread,
Jan 31, 2013, 3:01:07 PM1/31/13
to clo...@googlegroups.com

Any suggestion, no matter how far fetched, will be welcome. I am ignorant about the JVM so I am having trouble debugging this problem. 

larry google groups

unread,
Jan 31, 2013, 3:08:49 PM1/31/13
to clo...@googlegroups.com

I am using wrap-resource instead of wrap-file. Could that cause some issues with the path? (And, is this a path issue?)

(def app
  (-> app-routes
      (wrap-resource "public")
      (wrap-session {:cookie-name "timeout-discovery-session" :cookie-attrs {:max-age 10000 }})
      (wrap-cookies)
      (wrap-keyword-params)
      (wrap-nested-params)
      (wrap-params)))

Marko Topolnik

unread,
Jan 31, 2013, 3:09:34 PM1/31/13
to clo...@googlegroups.com
The java command is interpreting "-jar" as the name of a class instead of a command-line option. Something is messed up in the way the command is executed in your sysadmin's context.

Marshall Bockrath-Vandegrift

unread,
Jan 31, 2013, 3:16:37 PM1/31/13
to clo...@googlegroups.com
larry google groups <lawrenc...@gmail.com> writes:

> Any suggestion, no matter how far fetched, will be welcome. I am
> ignorant about the JVM so I am having trouble debugging this problem. 

> java -jar kiosk.clj 30000

These are weird (.clj vs .jar), but since you say whatever you actually
ran worked...

> Then I gave the app to the sysadmin, and he tried to spin
> it up on another server, and on startup he got the error:
>
> Could not find or load main class –jar

I’m guessing encoding error. In fact, if that error is a direct
copy-paste from either the exact error or what you sent the sysadmin, it
completely explains it. Your `-` character in `-jar` above is in fact
`-` (en-dash), which is causing `java` to search the classpath for a
class named `–jar`.

-Marshall

larry google groups

unread,
Jan 31, 2013, 4:05:06 PM1/31/13
to clo...@googlegroups.com
> >            java -jar kiosk.clj 30000 
>
> These are weird (.clj vs .jar), but since you say whatever you 
> actually ran worked... 


Apologies. I re-typed and stupidly typed "clj". But what I sent to the sysadmin was a copy and paste of what I had used in my terminal to get the app running. 

I like your idea about the encoding error. He is about to test that idea. 

larry google groups

unread,
Jan 31, 2013, 4:17:52 PM1/31/13
to clo...@googlegroups.com
> I’m guessing encoding error.  In fact, if that error is a direct 
> copy-paste from either the exact error or what you sent the sysadmin, it 
> completely explains it.  Your `-` character in `-jar` above is in fact 
>`-` (en-dash), which is causing `java` to search the classpath 
> for a class named `–jar`. 


Good lord, you were correct! We re-typed it at the terminal and everything worked great. Very perceptive, that you figured that out. I would not have guessed that error even if I had one million years to figure out the problem.







W dniu czwartek, 31 stycznia 2013 15:16:37 UTC-5 użytkownik Marshall Bockrath-Vandegrift napisał:
Reply all
Reply to author
Forward
0 new messages