Datastax Java Apache Cassandra 的驱动程序实现
Datastax Java Driver Implementation for Apache Cassandra
我正在 Eclipse 的 Maven 项目中实现 here 描述的 Datastax Java 驱动程序。
我在 pom.xml 中添加了三个依赖项,如下所述:
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.1.4</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-mapping</artifactId>
<version>3.1.4</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-extras</artifactId>
<version>3.1.4</version>
</dependency>
然后我实现了this manual中描述的class。
package CasConnector.CasConnector;
import com.datastax.driver.core.*;
public class CasConnector {
public static void main(String[] args) {
Cluster cluster = null;
try {
cluster = Cluster.builder() // (1)
.addContactPoint("127.0.0.1")
.build();
Session session = cluster.connect(); // (2)
ResultSet rs = session.execute("select release_version from system.local"); // (3)
Row row = rs.one();
System.out.println(row.getString("release_version")); // (4)
} finally {
if (cluster != null) cluster.close(); // (5)
}
}
}
然后我将以下 JAR 文件添加到 "Referenced Libraries" 目录(添加到构建路径):
- cassandra-driver-core-3.1.4.jar
- cassandra-driver-extras-3.1.4.jar
- cassandra-driver-mapping-3.1.4.jar
然后我将项目导出为 JAR 文件以在 Linux 上执行,但出现以下错误。似乎无法加载 Cluster class,但我在包含它的 Maven 项目中添加了 cassandra-driver-core-3.1.4 依赖项。请提出我的配置中可能存在的错误或遗漏的地方。
# java -jar test.jar
Exception in thread "main" java.lang.NoClassDefFoundError: com/datastax/driver/core/Cluster
at CasConnector.CasConnector.CasConnector.main(CasConnector.java:14)
Caused by: java.lang.ClassNotFoundException: com.datastax.driver.core.Cluster
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
解决方案:
1.将以下插件添加到 pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>Path.to.Main.Class</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
2。右键单击您的项目 -> 'Run As' -> 'Maven Build' -> 输入 "clean install" -> 'Apply' -> 'Run'.
生成的 JAR 文件将在包含所有需要的依赖项的 "target" 目录下创建。
我认为您的 test.jar
缺少一些第 3 方依赖项。如果您使用 Maven
构建项目,请尝试使用 maven plugin
创建 JAR,而不是使用 Eclipse export project as jar 功能。 create an executable JAR with dependencies using Maven 你可以使用 maven-shade-plugin
或 maven-assembly-plugin
maven 插件。
我正在 Eclipse 的 Maven 项目中实现 here 描述的 Datastax Java 驱动程序。 我在 pom.xml 中添加了三个依赖项,如下所述:
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.1.4</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-mapping</artifactId>
<version>3.1.4</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-extras</artifactId>
<version>3.1.4</version>
</dependency>
然后我实现了this manual中描述的class。
package CasConnector.CasConnector;
import com.datastax.driver.core.*;
public class CasConnector {
public static void main(String[] args) {
Cluster cluster = null;
try {
cluster = Cluster.builder() // (1)
.addContactPoint("127.0.0.1")
.build();
Session session = cluster.connect(); // (2)
ResultSet rs = session.execute("select release_version from system.local"); // (3)
Row row = rs.one();
System.out.println(row.getString("release_version")); // (4)
} finally {
if (cluster != null) cluster.close(); // (5)
}
}
}
然后我将以下 JAR 文件添加到 "Referenced Libraries" 目录(添加到构建路径):
- cassandra-driver-core-3.1.4.jar
- cassandra-driver-extras-3.1.4.jar
- cassandra-driver-mapping-3.1.4.jar
然后我将项目导出为 JAR 文件以在 Linux 上执行,但出现以下错误。似乎无法加载 Cluster class,但我在包含它的 Maven 项目中添加了 cassandra-driver-core-3.1.4 依赖项。请提出我的配置中可能存在的错误或遗漏的地方。
# java -jar test.jar
Exception in thread "main" java.lang.NoClassDefFoundError: com/datastax/driver/core/Cluster
at CasConnector.CasConnector.CasConnector.main(CasConnector.java:14)
Caused by: java.lang.ClassNotFoundException: com.datastax.driver.core.Cluster
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
解决方案:
1.将以下插件添加到 pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>Path.to.Main.Class</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
2。右键单击您的项目 -> 'Run As' -> 'Maven Build' -> 输入 "clean install" -> 'Apply' -> 'Run'.
生成的 JAR 文件将在包含所有需要的依赖项的 "target" 目录下创建。
我认为您的 test.jar
缺少一些第 3 方依赖项。如果您使用 Maven
构建项目,请尝试使用 maven plugin
创建 JAR,而不是使用 Eclipse export project as jar 功能。 create an executable JAR with dependencies using Maven 你可以使用 maven-shade-plugin
或 maven-assembly-plugin
maven 插件。