问题描述
我一直在尝试使用gradle将vertica JDBC添加到我的Java项目中。由于vertica JDBC不在任何存储库上,因此我不得不从他们的站点下载它,并尝试通过不同的方式在本地导入它:
compile files('lib/vertica-jdbc-10.0.0-0.jar')
implementation files('lib/vertica-jdbc-10.0.0-0.jar')
在本地安装它,然后像往常一样引用它:
mvn install:install-file "-Dfile=/path_to/vertica-jdbc-10.0.0.jar" "-DgroupId=com.vertica" "-DartifactId=vertica-jdbc" "-Dversion=10.0.0" "-Dpackaging=jar"
然后使用
compile 'com.vertica:vertica-jdbc:10.0.0'
/ implementation 'com.vertica:vertica-jdbc:10.0.0'
所有这些方法似乎都将其内置到我的jar中,并按预期与所有文件一起在/ com / vertica /下找到它。但是,使用该行时:
Class.forName("com.vertica.jdbc.Driver");
引发以下异常:
java.lang.ClassNotFoundException: com.vertica.jdbc.Driver
0 = {StackTraceElement@3115} "java.net.URLClassLoader.findClass(URLClassLoader.java:382)"
1 = {StackTraceElement@3116} "java.lang.ClassLoader.loadClass(ClassLoader.java:424)"
2 = {StackTraceElement@3117} "sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)"
3 = {StackTraceElement@3118} "java.lang.ClassLoader.loadClass(ClassLoader.java:357)"
4 = {StackTraceElement@3119} "java.lang.Class.forName0(Native Method)"
5 = {StackTraceElement@3120} "java.lang.Class.forName(Class.java:264)"
关于为什么找不到它的任何想法?我想象这是一个类路径问题,但是从我读过的实现命令来看,应该可以解决这个问题?
解决方法
解决我的误会。尝试运行项目时,我是通过intellij来执行的。 Intellij不是您的类,不是您通过gradle构建的任何jar,因此我需要通过intellij gui将jar添加为外部依赖项。尽管直接调用jar时,类是按预期包含的。