英文:
Vertica JDBC classes not found after importing locally with gradle
问题
我一直在尝试使用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)"
你有关于为什么无法找到它的任何想法吗?我想这可能是一个类路径问题,但根据我阅读的内容,implementation命令应该可以解决这个问题?
英文:
i've been trying to add the vertica JDBC to my java project using gradle. As the vertica JDBC is not on any repos, I've had to download it from their site and try to import it locally through different means:
compile files('lib/vertica-jdbc-10.0.0-0.jar')
implementation files('lib/vertica-jdbc-10.0.0-0.jar')
Installing it locally and then referencing it as normal:
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"
then using
compile 'com.vertica:vertica-jdbc:10.0.0'
/ implementation 'com.vertica:vertica-jdbc:10.0.0'
All of these methods do seem to get it built into my jar, finding it under /com/vertica/ as expected with all the files. However when using the line:
Class.forName("com.vertica.jdbc.Driver");
The following exception gets thrown:
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)"
Any ideas as to why it cannot be found? i imagine it is a classpath problem but from what i've read the implementation command is suppose to take care of this?
答案1
得分: 0
原来是我的误解。在尝试运行项目时,我是通过Intellij来运行的。Intellij使用的是您的类,而不是通过gradle构建的任何jar包,所以我需要通过Intellij图形界面将该jar包添加为外部依赖。尽管直接调用jar包时,类被如预期般地包含进来。
英文:
Turns out a misunderstanding on my part. When attempting to run the project I was doing so through intellij. Intellij off of your classes, not any jars you've built through gradle and so i needed to add the jar as an external dependency through intellij gui. Although when calling the jar directly the classes are included as expected.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论