由于缺少mainClass,无法在Visual Studio中调试Flink示例



我的目标是按照教程中的建议调试此代码以实时查看它。

我的IDE是Visual Studio Code,这个例子的语言是Java。我正在运行一个 Flink 数据流 API 教程。

当我在任何一行放置断点时,出现以下错误:

Cannot find a class with the main method in the folder 'frauddetection'.

有人暗示我创建了一个launch.json文件,因此,这就是我创建的:

{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Debug (Launch) - Current File",
"request": "launch",
"mainClass": "FraudDetectionJob"
}
]
}

即使在配置上述文件并指定mainClass之后,我在调试器终端中也收到相同的错误:

Error: Could not find or load main class FraudDetectionJob

我尝试执行的代码如下:

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package spendreport;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.walkthrough.common.sink.AlertSink;
import org.apache.flink.walkthrough.common.entity.Alert;
import org.apache.flink.walkthrough.common.entity.Transaction;
import org.apache.flink.walkthrough.common.source.TransactionSource;
/**
* Skeleton code for the datastream walkthrough
*/
public class FraudDetectionJob {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<Transaction> transactions = env
.addSource(new TransactionSource())
.name("transactions");
DataStream<Alert> alerts = transactions
.keyBy(Transaction::getAccountId)
.process(new FraudDetector())
.name("fraud-detector");
alerts
.addSink(new AlertSink())
.name("send-alerts");
env.execute("Fraud Detection");
}
}

如何调试此文件?

我相信您无法编译和运行该应用程序。在您的pom.xml中,这导致了问题

<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
<version>${flink.version}</version>
<scope>provided</scope>
</dependency>

将范围更改为compile以解决此问题。另外,更多技术信息在这里。

--我是如何找到问题的--

我尝试运行教程中的示例(在Intellij IDEA中(,并得到类似于您的错误:

Error: Unable to initialize main class spendreport.FraudDetectionJob
Caused by: java.lang.NoClassDefFoundError: org/apache/flink/streaming/api/functions/source/SourceFunction

在进一步搜索时,我发现了这个类似的答案。

转载:

似乎 eclipse maven 导入器中的一个错误不适用于生命周期映射插件,要暂时解决您的问题,请尝试

  1. 关闭 VSCODE 和 Eclipse
  2. 删除 .project 文件和 .classpath 文件(如果根文件夹有(
  3. 在根文件夹上运行 MVN Eclipse:Eclipse
  4. 在 vscode 中打开根文件夹,F5 您将能够调试

或删除插件管理>插件中的生命周期映射插件

更多细节见 Flink 官方演示调试会得到错误:找不到使用 main 方法的类

相关内容

  • 没有找到相关文章

最新更新