gpt4 book ai didi

java - 从 JAR 加载类时出现 ClassNotFoundException

转载 作者:行者123 更新时间:2023-12-02 01:33:04 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的程序来连接到 Impala,执行查询并返回查询结果。然而,我从一开始就陷入了困境:由于某种原因,我无法从 JAR 文件加载 Impala JDBC 驱动程序类。

我尝试加载的 JAR 文件位于文件夹 lib/中,该文件夹位于我的项目的根文件夹中。否则我的项目遵循正常的 Maven 目录布局。我已将 JAR 文件的路径添加到项目的 pom.xml 中。我已经检查了 MANIFEST.MF 并且路径就在那里。我尝试使用 -classpath lib/ImpalaJDBC41.jar 选项运行我的程序,并且我还尝试将 JAR 文件放入 src/main/resources/文件夹。

这是我的 pom.xml 的一部分,我在其中设置了类路径:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<!-- Run shade goal on package phase -->
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<!-- add Main-Class to manifest file -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>com.example.App</Main-Class>
<Class-Path>lib/ImpalaJDBC41.jar</Class-Path>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>

这是我的 MANIFEST.MF

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: 400594
Class-Path: lib/ImpalaJDBC41.jar
Created-By: Apache Maven 3.5.3
Build-Jdk: 1.8.0_172
Main-Class: com.example.App

这是我的 Java 代码:

package com.example;

import java.lang.Class;

public final class App {
private App() {
}

/**
* @param args The arguments of the program.
*/
public static void main(String[] args) {
try {
Class<?> cls = Class.forName("com.cloudera.impala.jdbc41.Driver");
System.out.println("Class found: " + cls.getName());
} catch (ClassNotFoundException ex) {
System.out.println("Class not found: " + ex);
}
}
}

无论我尝试做什么,我都会收到 java.lang.ClassNotFoundException。我怀疑这个问题与类路径有某种关系,但我不知道它是什么。

最佳答案

据我了解,在您的 pom.xml 配置标记中删除 <Class-Path>标记并添加类路径,如下所示。这可以解决你的问题。这是更多的链接clarification 。还有"org.apache.maven.plugins.shade.resource.ManifestResourceTransformer" 中没有类路径标记。

<configuration>
<additionalClasspathElements>
<additionalClasspathElement>path/to/additional/resources</additionalClasspathElement>

</configuration>

关于java - 从 JAR 加载类时出现 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55743636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com