为了账号安全,请及时绑定邮箱和手机立即绑定

在 Docker 中运行简单的 Java 程序

在 Docker 中运行简单的 Java 程序

Cats萌萌 2023-04-26 16:14:56
我是 Java 和 Docker 的新手,所以这可能非常简单。该程序读取用户输入并将其传递给一个函数,该函数对具有深度限制的损坏链接执行 dfs。import java.util.Scanner;public class CrawlerTest {    public static void main(String [ ] args)    {        Scanner reader = new Scanner(System.in);        System.out.println("Enter full website url to crawl, starting with http://");        String domain = reader.next();        System.out.println("Enter max crawl depth: ");        int maxDepth = reader.nextInt();        reader.close();        Crawler crawler = new Crawler();        crawler.crawl(domain, maxDepth);    }}Crawler 类导入以下库import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Stack;import org.jsoup.Connection;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;import javafx.util.Pair;我在 eclipse 中导出了一个可运行的 jar 文件我创建了一个包含以下内容的 Docker 文件: FROM openjdk:12-alpine   WORKDIR / ADD Test.jar Test.jar   EXPOSE 8080   CMD java -jar Test.jar我用docker image build .. 这成功了,我得到了 docker image id接下来,我只是用 docker run -it 运行这个图像系统提示我输入用户输入,我成功地输入了。然后在第二次按 Enter 时,我看到以下错误,而在控制台中运行 jar 文件时我看不到这些错误:
查看完整描述

2 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

添加--attachdocker run命令中。

没有--attach,就没有供 Java 程序使用的控制台,因此任何使用System.in都会失败。


查看完整回答
反对 回复 2023-04-26
?
RISEBY

TA贡献1856条经验 获得超5个赞

从 JDK11 开始,JavaFX 已从默认 Java 发行版中删除。它需要通过 Java 模块系统显式添加。这就是你上课的NoClassDefFoundError原因Pair。更改 11 之前的 Java 版本或删除Pair类以解决该问题。您还可以将JavaFX 模块添加到模块路径中。


查看完整回答
反对 回复 2023-04-26
  • 2 回答
  • 0 关注
  • 186 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信