我需要帮助,包括导入的jar文件到我在Linux的java程序中。这是程序:
import java.sql.*;
public class CreateCoffees
{
public static void main(String args[])
{
try {
Class.forName("com.ibm.db2.jcc.DB2Driver");
}
catch(java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
System.exit(1);
}
}
}
为了执行Class.forName("com.ibm.db2.jcc.DB2Driver");
,我需要在类路径中添加两个.jar
个文件:
db2jcc_license_cu.jar
db2jcc4.jar
我将这些jar文件放入与CreateCoffees.java文件相同的目录中,然后编译并运行它:
javac CreateCoffees.java
java CreateCoffees
但是我收到了这个错误
ClassNotFoundException: com.ibm.db2.jcc.DB2Driver
然后我尝试了" -classpath"选项
javac -classpath ./db2jcc_license_cu.jar:./db2jcc4.jar CreateCoffees.java
java -classpath ./db2jcc_license_cu.jar:./db2jcc4.jar CreateCoffees
但得到了这个
Exception in thread "main" java.lang.NoClassDefFoundError: CreateCoffees
Caused by: java.lang.ClassNotFoundException: CreateCoffees
如何将这些jar文件包含到我的runnable jar中,以便我可以使用java -jar myjar.jar
运行它?
答案 0 :(得分:1)
试试这个
java -classpath ./db2jcc_license_cu.jar:./db2jcc4.jar:. CreateCoffees
当你使用-classpath
时,它会丢弃classpath中的当前目录,因此它在classpath中也需要.
并且显式
答案 1 :(得分:0)
如何将项目的jar包含在可运行的jar中:
我将逐步使用Eclipse Version:3.7.2在Ubuntu 12.10上运行。我还将向您展示如何制作build.xml
,以便您可以从命令行执行ant jar
并使用提取到其中的其他导入的jar创建您的jar。
基本上你要求Eclipse构建build.xml,将你的库导入jar中。
启动Eclipse并创建一个新的Java项目,创建一个新的包'mypackage',添加您的主类:Runner
将此代码放在那里。
现在包含mysql-connector-java-5.1.28-bin.jar
from Oracle,它使我们能够编写Java来连接MySQL数据库。通过右键单击项目来执行此操作 - >属性 - > java构建路径 - >添加外部罐子 - >选择mysql-connector-java-5.1.28-bin.jar。
在eclipse中运行程序,它应该运行,并告诉你用户名/密码无效,这意味着Eclipse已经正确配置了jar。
在Eclipse中转到File
- > Export
- > Java
- > Runnable Jar File
。您将看到此对话框:
确保设置'另存为ant脚本'复选框。这就是为什么你可以使用命令行稍后进行ant jar
。
然后转到终端并查看ant脚本:
所以你看,我运行了jar并且它没有错误,因为它发现mysql-connector-java-5.1.28-bin.jar
内嵌了Hello.jar
。
查看Hello.jar:vi Hello.jar
,你会看到许多对com/mysql/jdbc/stuff.class
的引用
要在命令行上执行ant jar
以自动完成所有这些操作:将buildant.xml
重命名为build.xml
,并将目标名称从create_run_jar
更改为jar
。
然后,在MyProject
内,您输入ant jar
并繁荣。你在MyProject中有你的jar。你可以使用java -jar Hello.jar
调用它,一切正常。