java jar 库_在jar中包含库

好的,这就是我们得到的:

我们有两个库包,我们已经编译成 jar .

package starwars;

public class JarJar {

public void JarSayHello()

{

System.out.println("Jaaaaar!!");

}

}

package barwars;

public class BarBar {

public void BarSayHello()

{

System.out.println("Baaaaa!!");

}

}

我们编译这些

javac -d bin -sourcepath src src/barwars/BarBar.java

jar cvf barwars.jar -C bin .

javac -d bin -sourcepath src src/starwars/JarJar.java

jar cvf starwars.jar -C bin .

我们都很好地装进了 jar 里 .

现在我们想将这两个jar包含到另一个java项目中 .

所以我们有

/project/src/a_pack/HelloWorld.java

/project/libs/starwars.jar

/project/libs/barwars.jar

/project/manifest.txt

package a_pack;

import starwars.JarJar;

import barwars.BarBar;

public class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello, World");

JarJar myJar = new JarJar();

myJar.JarSayHello();

BarBar myBar = new BarBar();

myBar.BarSayHello();

}

}

Manifest.txt

Main-Class: a_pack.HelloWorld

Class-Path: libs/starwars.jar libs/barwars.jar

现在我们编译它:

javac -d bin -sourcepath src -cp "libs/starwars.jar;libs/*" src/a_pack/HelloWorld.java

jar cvfm helloworld.jar manifest.txt -C bin .

这编译并运行良好 .

现在我有两个问题 .

首先 - 如果我将此jar文件移动到其他地方,并尝试运行它,那么我会得到:

Exception in thread "main" java.lang.NoClassDefFoundError: starwars/JarJar

现在我可以通过将libs文件夹移动到我移动jar的任何地方来解决这个问题 . 但是这让我觉得很乱(如果那个位置已经有一个libs文件夹怎么办?) .

理想情况下,我想要做的是在jar中包含引用的jar,所以有一个jar包含在其自身内部运行所需的所有内容 .

这可能吗? (这是好的做法吗?)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值