有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java需要将可传递依赖项作为捆绑包导入KURA

我对OSGI和KURA很陌生。我从昨天开始就在处理一个问题,我不明白它的原因

请告诉我我的方式是否错了

我正在我的项目中使用dropbox-core-sdk(3.0.0版)。我已经下载了它的jar,而且我还研究了它对jackson-core(版本2.7.4)的依赖性。我还下载了它的jar,并用dropbox-core-sdk.jarjackson-core.jar创建了一个包

首先,我导入了依赖项(与dropbox和jackson捆绑),然后导入了我自己的项目

当我开始我的项目时,它抛出以下异常:

java.lang.NoClassDefFoundError: javax/net/ssl/HttpsURLConnection
    at com.dropbox.core.http.StandardHttpRequestor.prepRequest(StandardHttpRequestor.java:196)
    at com.dropbox.core.http.StandardHttpRequestor.startPost(StandardHttpRequestor.java:70)
    at com.dropbox.core.http.StandardHttpRequestor.startPost(StandardHttpRequestor.java:28)
    at com.dropbox.core.DbxRequestUtil.startPostRaw(DbxRequestUtil.java:232)
    at com.dropbox.core.v2.DbxRawClientV2$1.execute(DbxRawClientV2.java:100)
    at com.dropbox.core.v2.DbxRawClientV2.executeRetriable(DbxRawClientV2.java:256)
    at com.dropbox.core.v2.DbxRawClientV2.rpcStyle(DbxRawClientV2.java:97)
    at com.dropbox.core.v2.users.DbxUserUsersRequests.getCurrentAccount(DbxUserUsersRequests.java:120)
    at org.eclipse.kura.example.hello_osgi.DropBoxTransfer.<init>(DropBoxTransfer.java:37)
    at org.eclipse.kura.example.hello_osgi.DropBoxUpdateJob.execute(DropBoxUpdateJob.java:20)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)

我有两个相关的问题

  1. 当我们从公共api创建捆绑包时,这个捆绑包应该包含公共api的可传递依赖项吗

  2. 即使我为Dropbox api提供了可传递的依赖项,为什么要抛出这样一个异常呢


共 (1) 个答案

  1. # 1 楼答案

    通常NoClassDefFoundError发生在捆绑包加载了捆绑包中不存在的类,并且该类的包没有Import-Package语句时

    创建捆绑包时,请确保使用bnd自动创建带有合适的Import-PackageExport-Package指令的清单

    我总是使用构建从jar创建一个包。当我使用maven时,我会使用maven插件See this question for some possible ways to create bundles