-1

jar から Java コードを変更しましたが、コンパイルした後、作成したコードが機能しません。逆コンパイルしようとすると、次のエラーが表示されます。

未解決のコンパイルの問題:

タイプ DirectDelivDetail の囲んでいるインスタンスはスコープ内でアクセスできません

this$0 は解決できないか、フィールドではありません

タイプ DirectDelivDetail の setComments()メソッドが表示されない

それについて議論するスレッドがたくさんあることは知っていますが、解決策は見つかりませんでした。さて、これはコードです:

public class DirectDelivDetail extends CMSApplet implements
    LookupHandler {

    private MultiLineEditor comments = null;
    private CMSShipment shipment = null;

    private void setComments() {
        try {
            if (this.shipment != null) {
                this.shipment.setComments(this.comments.getText());
            }
        } catch (BusinessRuleException bre) {
            JOptionPane.showMessageDialog(null, res.getString(bre.getMessage()));

            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    DirectDelivDetail.this.comments.requestFocus();
                }
            });
        } finally {
            checkFields();
        }
    }

    private JPanel createDetailPanel() {
        this.comments = new MultiLineEditor();
        this.comments.addFocusListener(new FocusAdapter() {
            public void focusLost(FocusEvent e) {
                if (!e.isTemporary()) {
                    DirectDelivDetail.this.setComments();
                }
            }
        });
        return detailPanel;
    }
}

コンパイル後にコードが変更されます。以下の変更点です。

private JPanel createDetailPanel() {
    this.comments = new MultiLineEditor();
    this.comments.addFocusListener(new FocusAdapter() {
        public void focusLost(FocusEvent e) {
            throw new Error("Unresolved compilation problems: \n\tNo enclosing instance of the type DirectDelivDetail is accessible in scope\n\tThe method checkCancelCommand(FocusEvent) from the type DirectDelivDetail is not visible\n\tthis$0 cannot be resolved or is not a field\n\tNo enclosing instance of the type DirectDelivDetail is accessible in scope\n\tThe method setComments() from the type DirectDelivDetail is not visible\n");
        }
    });
    return detailPanel;
}
4

1 に答える 1