2

我需要帮助,包括导入的 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 文件包含到我的可运行 jar 中以便我可以运行它java -jar myjar.jar

4

2 回答 2

1

尝试这个

java -classpath ./db2jcc_license_cu.jar:./db2jcc4.jar:. CreateCoffees

当您使用-classpath它时,它会从类路径中丢失当前目录,因此它也需要.在类路径中明确

于 2013-07-10T22:21:12.397 回答
0

如何将项目的 jar 包含到可运行的 jar 中:

我将使用在 Ubuntu 12.10 上运行的 Eclipse 版本:3.7.2 逐步引导您完成。我还将向您展示如何制作,build.xml以便您可以ant jar从命令行执行并创建您的 jar,并将其他导入的 jar 提取到其中。

基本上,您要求 Eclipse 为您构建将库导入 jar 的 build.xml。

  1. 启动 Eclipse 并创建一个新的 Java 项目,创建一个新包“mypackage”,添加您的主类:Runner 将这段代码放在那里。

    在此处输入图像描述

  2. 现在包括mysql-connector-java-5.1.28-bin.jar 来自 Oracle的,它使我们能够编写 Java 来连接到 MySQL 数据库。通过右键单击项目 -> 属性 -> java 构建路径 -> 添加外部 Jar -> 选择 mysql-connector-java-5.1.28-bin.jar 来执行此操作。

  3. 在 Eclipse 中运行程序,它应该会运行,并告诉您用户名/密码无效,这意味着 Eclipse 已正确配置了 jar。

  4. 在 Eclipse 中转到File-> Export-> Java-> Runnable Jar File。您将看到此对话框:

    在此处输入图像描述

    确保设置“另存为 ant 脚本”复选框。这就是它的原因,因此您可以使用命令行ant jar稍后进行操作。

  5. 然后去终端查看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.xmlbuild.xml,并将目标名称从 更改create_run_jarjar

然后,从MyProject您的内部输入ant jar并发出声音。你在 MyProject 中有你的 jar。你可以使用它来调用它java -jar Hello.jar,这一切都有效。

于 2013-12-29T23:45:47.857 回答