gpt4 book ai didi

Java/Dataflow - 无法使用 ClassLoader 检测类路径元素

转载 作者:搜寻专家 更新时间:2023-10-31 19:31:56 24 4
gpt4 key购买 nike

我猜这更像是一个一般的 Java/Eclipse 问题,但我不是 Java 专家,所以这对我来说并不合适。堆栈跟踪在最后。

https://github.com/apache/beam/blob/9d9ffa5f1a3a9f280dfafae15944764a568515ef/runners/google-cloud-dataflow-java/src/main/java/org/apache/beam/runners/dataflow/DataflowRunner.java

上面是抛出错误的文件,它非常简单 - 我们是否使用了 URLClassLoader?不是 Java 专家,我不明白如何切换到 URLClassLoader 并且谷歌搜索这让我觉得这不是我需要关心的事情。

"Unable to use ClassLoader to detect classpath elements"

让我觉得我添加了错误的类路径,Eclipse 正在做一些奇怪的事情。

Google 数据流/apache beam 文档都没有提及任何关于 URLClassLoader 的内容,现在我什至无法运行他们的示例项目。我很确定我做了什么,但我不确定是什么。

如有任何帮助,我们将不胜感激。

Jan 16, 2018 8:03:48 PM org.apache.beam.runners.dataflow.DataflowRunner 

detectClassPathResourcesToStage
SEVERE: Unable to use ClassLoader to detect classpath elements. Current ClassLoader is jdk.internal.loader.ClassLoaders$AppClassLoader@3b764bce, only URLClassLoaders are supported.
Exception in thread "main" java.lang.RuntimeException: Failed to construct instance from factory method DataflowRunner#fromOptions(interface org.apache.beam.sdk.options.PipelineOptions)
at org.apache.beam.sdk.util.InstanceBuilder.buildFromMethod(InstanceBuilder.java:233)
at org.apache.beam.sdk.util.InstanceBuilder.build(InstanceBuilder.java:162)
at org.apache.beam.sdk.PipelineRunner.fromOptions(PipelineRunner.java:52)
at org.apache.beam.sdk.Pipeline.create(Pipeline.java:142)
at twitchInsights.MainPipeline.main(MainPipeline.java:59)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.apache.beam.sdk.util.InstanceBuilder.buildFromMethod(InstanceBuilder.java:222)
... 4 more
Caused by: java.lang.IllegalArgumentException: Unable to use ClassLoader to detect classpath elements. Current ClassLoader is jdk.internal.loader.ClassLoaders$AppClassLoader@3b764bce, only URLClassLoaders are supported.
at org.apache.beam.runners.dataflow.DataflowRunner.detectClassPathResourcesToStage(DataflowRunner.java:1365)
at org.apache.beam.runners.dataflow.DataflowRunner.fromOptions(DataflowRunner.java:244)
... 9 more

完整异常:

Thread [main] (Suspended (exception IllegalArgumentException))  
DataflowRunner.detectClassPathResourcesToStage(ClassLoader) line: 1365
DataflowRunner.fromOptions(PipelineOptions) line: 244
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43
Method.invoke(Object, Object...) line: 564
InstanceBuilder<T>.buildFromMethod(Class<?>[]) line: 222
InstanceBuilder<T>.build() line: 162
PipelineRunner<ResultT>.fromOptions(PipelineOptions) line: 52
Pipeline.create(PipelineOptions) line: 142
MainPipeline.main(String[]) line: 60

最佳答案

我认为这是 Java 9 特有的问题。 Beam 尚未正式支持 Java 9 - 请参阅 https://issues.apache.org/jira/browse/BEAM-2530目前的进展。

您可以尝试通过 --filesToStage 指定类路径元素来解决此特定问题(这将绕过基于当前类加载器的自动检测 - 这是失败的地方)。但是,您可能会遇到其他问题。

关于Java/Dataflow - 无法使用 ClassLoader 检测类路径元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48292491/

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