好的,这是我们得到的:
我们有两个库包,我们已经将它们编译成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 .
给我们装进罐子里。
现在我们想将这两个罐子包含到另一个Java项目中。
所以我们有
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文件移动到其他地方,并尝试运行它,那么我将得到:
线程“main”java.lang.NoClassDefoundError:Starwars/jarjar
异常
现在我可以通过将libs文件夹移动到我移动jar的任何地方来解决这个问题。但这给我的印象是乱七八糟的(如果那个位置已经有一个libs文件夹呢?)。
理想情况下,我想做的是在jar中包含引用的jar,这样就有一个jar包含了在其内部运行所需的所有内容。
这可能吗?(练习好吗?)
可能,是的。很好的练习,不。
JAR只是zip文件,所以您可以尽情解压和重新压缩。更大的问题是在项目变大时管理所有这些单独的JAR。
大多数项目不使用命令行进行编译。相反,IDE使您的JAR保持最新。大多数现代Java项目都使用Maven或Ivy将罐子放在存储库中,并根据需要将它们取出。
看看Eclipse、Netbeans或Intellij。并研究Maven对项目的结构化。
我试图在我的简单Groovy脚本中使用“httpBuilder”。当我使用'@grab'导入依赖项时,一切都运行良好。但是,我希望将jar保存在一个不同的目录中,并使用classLoader函数导入它。我已经复制了“@grab”放在我的grapes目录中的“http-builder-0.7.jar”,并将其粘贴到我的Groovy脚本运行的同一目录中(在Windows上)。然后注释掉“@Grab”语
我已经浏览了Stackoverflow一整天,寻找如何做到这一点,但我还没有成功 我正在将我制作的一个快速游戏打包成一个可执行的jar,但我没有正确地引用图像,我只是引用了文件 我的类在src default package中,我不确定应该在哪里添加映像,或者是否必须将映像添加到构建路径中,或者在最新版本的eclipse中将映像添加到构建路径中的正确方法
问题内容: 我刚刚“继承”了一个Java项目,而不是来自Java背景,有时我会有点迷失。Eclipse用于在开发过程中调试和运行应用程序。我已经通过Eclipse成功创建了一个.jar文件,该文件“包含”了所有必需的外部jar,例如Log4J,xmlrpc- server等。然后可以使用以下命令成功运行此大.jar: 我的下一步是使用Ant(版本1.7.1)自动进行构建,因此我不必参与Eclips
我可以像这样创建sessionfactory bean。 但是,使用带有jar的类路径或列出hbm.xml文件的@EntityScan或@code仍然不能生成托管类型:classcom.opensymphony.workflow.spi.hibernate.HibernateMONtStep 我看到了一些答案,您使用不同的类来生成sessionFactory bean。有没有一种简单的方法可以获取
问题内容: 我需要从Eclipse Java项目中导出jar,并且要包含引用的库。我不能为此使用fatjar,这是每个人似乎都推荐的。必须有另一种方式来执行此操作。有人知道这是什么吗? 问题答案: Eclipse的下一个版本(3.5,将于明年6月发布)具有包含所有必要jar的选项。它是在3.5M5中引入的。 或者,您可以尝试使用Maven 2构建项目。然后,您可以使用构建一个“胖”罐。 另一种选择
我真正需要的是Eclipse与Netbeans的等价物: 我想,这样我就可以分发它,而无需将lib文件夹包含到任何地方。 这是最初的问题。 我试图建立一个罐子出来的网豆,将包装所有的库文件在里面。我听说选择导出可以使用Eclipse。使用Netbean,如果我“清理并构建”,它将在dist文件夹中创建一个可执行的jar,但是它所依赖的所有库都在一个名为lib的文件夹中。我需要它都在一个jar文件中