Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 作为classic jar运行OSGI包时出现NoClassDefFoundError_Java_Eclipse_Maven_Dependency Management_Tycho - Fatal编程技术网

Java 作为classic jar运行OSGI包时出现NoClassDefFoundError

Java 作为classic jar运行OSGI包时出现NoClassDefFoundError,java,eclipse,maven,dependency-management,tycho,Java,Eclipse,Maven,Dependency Management,Tycho,我有Java应用程序和RCP应用程序之间的通用代码。因此,我创建了一个OSGI捆绑包,其中包含: 将其用作经典jar的主类 在我的RCP应用程序中使用它的OSGi清单 我首先使用Tycho Manifest构建了所有这些,在我需要在公共代码中使用外部jar之前,它工作得很好 我需要使用jsch,因此我在MANIFEST.MF中添加了jsch: Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Main-Class: mygroupid.Main

我有Java应用程序和RCP应用程序之间的通用代码。因此,我创建了一个OSGI捆绑包,其中包含:

  • 将其用作经典jar的主类
  • 在我的RCP应用程序中使用它的OSGi清单
我首先使用Tycho Manifest构建了所有这些,在我需要在公共代码中使用外部jar之前,它工作得很好

我需要使用jsch,因此我在MANIFEST.MF中添加了jsch:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Main-Class: mygroupid.Main
Bundle-Name: Common tools
Bundle-SymbolicName: common-tools
Bundle-Version: 1.0.1.qualifier
Export-Package: mygroupid,
      mygroupid.tools
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.osgi.framework;version="1.3.0"
Require-Bundle: com.jcraft.jsch;bundle-version="0.1.46"
我用Tycho构建了我的RCP应用程序,它可以正常工作。但是,当我使用
java-JAR myjar.JAR
以纯JAR的形式运行包时,我得到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/jcraft/jsch/JSchException
如果我用Eclipse导出我的包,它就会工作。所以我的第谷配置有一个错误

如何解决这个问题? Tycho是否有一个带有依赖项的jar?情况似乎并非如此 我错过了什么


(我的配置:EclipseJuno with m2e,Tycho0.16.0,p2:Juno,Tycho:packaging>Eclipse插件,目标平台配置:resolver=p2,pomDependencies=consive。)

如果您在Linux/Unix平台上工作,您可以尝试 java-classpath:myjar.jar com.yourpackage.mainclass

如果你在windows平台上工作,你可以试试 java类路径;myjar.jar com.yourpackage.mainclass

只需将添加到构建中,并让它构建一个包含所有依赖项的jar:

<plugin>
   <artifactId>maven-assembly-plugin</artifactId>
   <version>2.4</version>
   <configuration>
      <descriptorRefs>
         <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
   </configuration>
</plugin>


. 您需要为此编写自己的程序。

是的,我知道类路径。但是我需要一个完整的OSGI包,因为Eclipse可以做到这一点。我只想为命令行版本部署一个jar。如何使用Tycho构建它?您可以尝试将编写的MANIFEST.MF与生成的eclipse导出进行比较。