我想安装一些Google Cloud Java客户端库,以便在tJava组件中使用它(我不想使用talend的预构建组件)。
我正在尝试一个带有tJava组件的作业的测试。这是我想要运行的代码:
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
在advance设置中,我导入以下库:
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryOptions;
要设置以下库,我执行了以下步骤:
>
我从https://search.maven.org/search?q=g下载了最后一个版本的神器google-Cloud-bigQuery:com.google.cloudAND a: google-Cloud-bigQuery
我从https://mvnrepository.com/artifact/com.google.cloud/google-cloud-core/1.94.0下载了最新版本的神器google-Cloud-core
我把这两个罐子放在下面的文件夹里:
-...\TALEND STUDIO \配置。m2\repository\com\google\cloud\google cloud bigquery\1.126.3\google-cloud-bigquery-1.126.3。罐子
-...\TALEND Studio\配置. m2\repository\com\google\Cloud\google-Cloud-core\1.94.0\google-Cloud-core-1.94.0
从navigator选项卡打开:NAME_PROJECT/poms/pom。xml和我添加了如下依赖项:
使用底部的“添加”更改pom。xml格式如下:
...
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bigquery</artifactId>
<version>1.126.3</version>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-core</artifactId>
<version>1.94.0</version>
</dependency>
</dependencies>
</project>
线程“main”java中出现异常。lang.NoClassDefFoundError:com/google/cloud/bigquery/BigQueryOptions位于bce_数据中心。bigquery_模板_0_1。bigquery_模板。bce_数据中心的tJava_1进程(bigquery_template.java:331)。bigquery_模板_0_1。bigquery_模板。在bce_数据中心运行JobIntos(bigquery_template.java:638)。bigquery_模板_0_1。bigquery_模板。main(bigquery_template.java:464)由:java引起。lang.ClassNotFoundException:com.google.云bigquery。java的大查询选项。网URLClassLoader。java上的findClass(URLClassLoader.java:382)。lang.ClassLoader。sun上的loadClass(ClassLoader.java:424)。杂项。Launcher$AppClassLoader。java上的loadClass(Launcher.java:349)。lang.ClassLoader。loadClass(ClassLoader.java:357)。。。还有3个
我从这个帖子中看到了为什么Java中会出现NoClassDefFoundError?问题的原因是在运行时找不到类代码。我不知道如何将类(jar)放入运行时路径。
谢谢你的帮助。
编辑:
我不知道它是否有用,但我把我隐藏的所有pom.xml.(与xxx)的一部分用于隐私。我认为模块列表(talend作业)没有用,所以我删除了列表的一部分:
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example.xxx</groupId>
<artifactId>code.Master</artifactId>
<version>7.0.1</version>
<packaging>pom</packaging>
<name>xxx Codes Master</name>
<url>http://www.talend.org/</url>
<modules>
<module>code/routines</module>
<module>jobs/process/xxx</module>
<module>jobs/process/xxx/xxx/xxx</module>
<module>...</module>
<module>jobs/process/xxx/xxx/xxx</module>
<module>../../REFERENCE/poms</module>
<module>jobs/process/xxx</module>
</modules>
<properties>
<talend.project.name>xxx</talend.project.name>
<encoding>UTF-8</encoding>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<dependencies>
<dependency>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-compiler-jdt</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerId>jdt</compilerId>
</configuration>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<profiles>
<profile>
<id>ci-builder</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.talend</groupId>
<artifactId>ci.builder</artifactId>
<version>7.0.1</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bigquery</artifactId>
<version>1.126.3</version>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-core</artifactId>
<version>1.94.0</version>
</dependency>
</dependencies>
</project>
pom.xml文件中的依赖项加载在maven存储库中~/. m2/(在您的情况下是...\TALEND stuIO\配置. m2\存储库)。主要用于编译(带有编译范围)
在执行jar时,Java无法访问这些jar,可能是因为它们不在类路径或同一目录中。
最简单的解决方案是将添加的两个新依赖项jar放置到应用程序的jar存在的同一个目录中,或者在java的PATH环境变量中添加这些jars的路径。
使用java可见的JAR执行应用程序,这将解决问题。
您应该在pom.xml中做出适当的定义(使用Eclipse中的pom.xml
选项卡编辑文本)。另请参见Maven文档。
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bigquery</artifactId>
<version>1.126.3</version>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-core</artifactId>
<version>1.94.0</version>
</dependency>
<!-- other dependencies -->
</dependencies>
Maven负责向编译路径和运行时路径添加依赖项。
作业的POM文件是由studio操作生成的,因此我避免手动编辑它们。
还有其他方法可以实现这一点,首先我建议看看tLibraryLoad组件来添加依赖关系罐:https://help.talend.com/r/lw17672ujtsKAM3zY5H2oQ/wcAnfUMxgsm90CCS6~jiZw
如果您有2-3个以上的jar文件,您也可以通过例程处理依赖项,然后将例程设置为作业的依赖项。请记住,如果您的SDK有额外的依赖jars,那么也应该添加它们。
我使用子JPanel构造JScrollPane,然后尝试将JScrollPane添加到父JPanel中,希望有一个可滚动的自定义JPanel。 我有一个大的细白线前面的所有我的组件,他们是没有滚动。有什么想法吗?
我已经为android Studio创建了一个webview应用程序。但没有加载web URL。错误为NET::ERR_ACCESS_DENIED。有谁能帮忙吗
我有一个使用Java Version8的Spring和Maven的项目。当我运行maven update时,它适用于Java9或更高版本,当我编译它时,它适用于Java8。我注意到了这一点,因为用Maven更新会将一个特定的类更改为Java9,而我无法导入这个类。 这个类是:javax.annotation.generated(Java8)。 这是要导入的类。但是,当我进行maven更新时,文件的
当应用程序启动EncryptionBootstrapConfiguration无法自动装配我的自定义TextEncryptor-https://github.com/spring-cloud/spring-cloud-commons/blob/cde7c7f3118382490c28776f66e0a56f248141fd/spring-cloud-context/src/main/java/or
我有一个问题,找出我的源代码中的错误。 有什么办法可以解决它吗? 我的代码中抛出了“ArrayIndexOutOfBoundsException”,但我无法找到它的位置。 android studio中的logcat:
RISC-V 与中断相关的寄存器和指令 [info] 回顾:RISC-V 中的机器态(Machine Mode,机器模式,M 模式) 是 RISC-V 中的最高权限模式,一些底层操作的指令只能由机器态进行使用。 是所有标准 RISC-V 处理器都必须实现的模式。 默认所有中断实际上是交给机器态处理的,但是为了实现更多功能,机器态会将某些中断交由内核态处理。这些异常也正是我们编写操作系统所需要实现的