首页 > 解决方案 > 编译单个 Java 文件

问题描述

对 Java 来说相对较新 - 我只是更新 JAR 文件中的一个文件。我已经反编译了 JAR,并且可以访问 Java 文件。

我正在尝试使用 javac,但是当我使用它时,它会引发错误,因为它没有对各种依赖项的引用。

我需要编译所有东西来摆脱这些吗?有没有一种简单的方法来编译一个文件?

javac MessageNotificationService.java
...

MessageNotificationService.java:108: error: cannot find symbol
        List<EmailNotification> pendingEmails = this.messageDao.findPendingNotification("merchant", "new_message");
             ^
  symbol:   class EmailNotification
  location: class MessageNotificationService
MessageNotificationService.java:111: error: cannot find symbol
            List<Long> ids = pendingEmails.stream().map(EmailNotification::getId).collect(Collectors.toList());
                                                        ^
  symbol:   variable EmailNotification
  location: class MessageNotificationService
MessageNotificationService.java:182: error: cannot find symbol
        for (EmailNotification notification : pendingEmails) {
             ^
  symbol:   class EmailNotification
  location: class MessageNotificationService
39 errors

抱歉,如果这是一个基本问题 - 所有关于此的搜索结果似乎都是针对没有此类错误的独立文件。

标签: java

解决方案


据我所知,您只需指向旧的 JAR 文件

javac -cp "./old-jar-file-1.0.0.jar" ./location-of-file/MessageNotificationService.java

推荐阅读