lein uberjar打包后运行程序报错

162 views
Skip to first unread message

naitong Xiao

unread,
Feb 29, 2012, 3:54:51 AM2/29/12
to cn-cl...@googlegroups.com
今天用clojure写了统计月度Jira需求任务处理的情况的小程序, 在repl下能够正常运行 (
开启一个新的repl,加载main函数所在namespace,然后运行-main)
但是用lein uberjar 打包后,运行一会儿后(已经连上jira rest接口)报错

在stackoverflow上查了一下,又说是jesery-json 没有包含到classpath,  我确认过jar包里面已经包含
觉得可能是clojure这方面的问题, leiningen打包相关

请教一下大家

Feb 29, 2012 4:34:58 PM com.sun.jersey.api.client.ClientResponse getEntity
SEVERE: A message body reader for Java class org.codehaus.jettison.json.JSONObject, and Java type class org.codehaus.jettison.json.JSONObject, and MIME media type application/json;charset=UTF-8 was not found
Feb 29, 2012 4:34:58 PM com.sun.jersey.api.client.ClientResponse getEntity
SEVERE: The registered message body readers compatible with the MIME media type are:
*/* ->
  com.sun.jersey.core.impl.provider.entity.FormProvider
  com.sun.jersey.core.impl.provider.entity.StringProvider
  com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
  com.sun.jersey.core.impl.provider.entity.FileProvider
  com.sun.jersey.core.impl.provider.entity.InputStreamProvider
  com.sun.jersey.core.impl.provider.entity.DataSourceProvider
  com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
  com.sun.jersey.core.impl.provider.entity.ReaderProvider
  com.sun.jersey.core.impl.provider.entity.DocumentProvider
  com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader
  com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader
  com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader
  com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General
  com.sun.jersey.core.impl.provider.entity.EntityHolderReader

Exception in thread "main" com.sun.jersey.api.client.ClientHandlerException: A message body reader for Java class org.codehaus.jettison.json.JSONObject, and Java type class org.codehaus.jettison.json.JSONObject, and MIME media type application/json;charset=UTF-8 was not found
    at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:548)
    at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:505)
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:605)
    at com.sun.jersey.api.client.WebResource.get(WebResource.java:187)
    at com.atlassian.jira.rest.client.internal.jersey.AbstractJerseyRestClient$1.call(AbstractJerseyRestClient.java:84)
    at com.atlassian.jira.rest.client.internal.jersey.AbstractJerseyRestClient.invoke(AbstractJerseyRestClient.java:54)
    at com.atlassian.jira.rest.client.internal.jersey.AbstractJerseyRestClient.getAndParse(AbstractJerseyRestClient.java:80)
    at com.atlassian.jira.rest.client.internal.jersey.JerseySearchRestClient.searchJql(JerseySearchRestClient.java:89)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:92)
    at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:30)
    at jira_work_calculator.core$search_jql.invoke(core.clj:31)
    at jira_work_calculator.core$search_jql_all.invoke(core.clj:34)
    at jira_work_calculator.core$_main$iter__98__102$fn__103$fn__104.invoke(core.clj:69)
    at jira_work_calculator.core$_main$iter__98__102$fn__103.invoke(core.clj:68)
    at clojure.lang.LazySeq.sval(LazySeq.java:42)
    at clojure.lang.LazySeq.seq(LazySeq.java:60)
    at clojure.lang.RT.seq(RT.java:466)
    at clojure.core$seq.invoke(core.clj:133)
    at clojure.core$dorun.invoke(core.clj:2723)
    at jira_work_calculator.core$_main.doInvoke(core.clj:68)
    at clojure.lang.RestFn.invoke(RestFn.java:397)
    at clojure.lang.AFn.applyToHelper(AFn.java:159)
    at clojure.lang.RestFn.applyTo(RestFn.java:132)
    at jira_work_calculator.core.main(Unknown Source)

Sun Ning

unread,
Feb 29, 2012, 4:45:29 AM2/29/12
to cn-cl...@googlegroups.com

试一下lein jar之后cp里带上lib/下的jars运行一下??
或者lein uberjar之后cp里带上那个json库?

看看有没有线索

naitong Xiao

unread,
Feb 29, 2012, 5:46:37 AM2/29/12
to cn-cl...@googlegroups.com
嗯,加上cp应该就可以
我知道问题的原因了, rest client library会读classpath*:META-INF/services/javax.ws.rs.ext.MessageBodyReader Writer文件

Lein uberjar 打包在一起同名文件就会覆盖掉

谢谢你的回复

Jery Lian

unread,
May 8, 2015, 11:03:47 PM5/8/15
to cn-cl...@googlegroups.com
naitong,

我用eclipse 输出runnable jar, 从命令行运行 碰到相同的问题,
请问如何解决?
Reply all
Reply to author
Forward
0 new messages