89527


自分java初心者で、外部クラスを使用したわけなのですが、コンパイル時にimportしているパッケージは見つからないと表示されました。何がいけないのでしょうか。

App.java

[code]

    import java.io.*;
    import org.apache.poi.EncryptedDocumentException;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.ss.usermodel.WorkbookFactory;
    import javax.swing.JFrame;
    import javax.swing.JTextField;
    import javax.swing.JButton;
    
    public class App {
        File file;
        Workbook excel;
        Sheet sheet;
        Row row;
        Cell cell;
    
        App(String path) {
            file = new File(path);
            try{
                excel = WorkbookFactory.create(file);
            }catch(IOException ie) {
                System.out.println("error");
            }
            sheet = excel.getSheet("user_data");
    
            row = sheet.getRow(2);
    
            cell = row.getCell(0);
            System.out.println(cell.getStringCellValue());
        }
    }
    
    
[/code]

Frame.java

[code]

    import javax.swing.JFrame;
    import javax.swing.JButton;
    import javax.swing.JTextField;
    import javax.swing.SpringLayout;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import java.io.File;
    import java.awt.event.*;
    import javax.swing.SpringLayout;
    import javax.swing.JPanel;
    
    class Frame extends JFrame implements ActionListener{
        JFrame frame;
        JButton button;
        JLabel label;
        JTextField textField;
        SpringLayout s;
        JPanel panel;
    
        public static void main(String[] args) {
            new Frame();
        }
    
        Frame() {
            frame = new JFrame();
            frame.setSize(400, 200);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocationRelativeTo(null);
    
            panel = new JPanel();
            s = new SpringLayout();
            panel.setLayout(s);
    
            textField = new JTextField(20);
            textField.addActionListener(this);
            textField.setText("bin\\Excel.xlsx");
    
            label = new JLabel("Enter the Path");
    
            button = new JButton("Enter");
            button.addActionListener(this);
    
            s.putConstraint(SpringLayout.SOUTH, textField, 10, SpringLayout.SOUTH, frame);
            s.putConstraint(SpringLayout.WEST, textField, 30, SpringLayout.WEST, frame);
    
            s.putConstraint(SpringLayout.SOUTH, label, -10, SpringLayout.NORTH, textField);
            s.putConstraint(SpringLayout.WEST, label, 10, SpringLayout.WEST, textField);
    
            s.putConstraint(SpringLayout.SOUTH, button, 0, SpringLayout.SOUTH, textField);
            s.putConstraint(SpringLayout.WEST, button, 20, SpringLayout.EAST, textField);
    
            panel.add(textField);
            panel.add(label);
            panel.add(button);
            frame.add(panel);
            frame.setVisible(true);
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
            if(new File(textField.getText()).exists()) {
                new App(textField.getText());
                frame.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
            }else {
                JOptionPane.showMessageDialog(frame, "This file doesn't exist.", "Invalid File", JOptionPane.ERROR_MESSAGE);
            }
        }
    }
    
[/code]

[![階層構造](https://i.stack.imgur.com/WnrDu.png)](https://i.stack.imgur.com/WnrDu.png)

[![実行結果](https://i.stack.imgur.com/NPoUJ.png)](https://i.stack.imgur.com/NPoUJ.png)


CC BY-SA 4.0
2022-06-22T08:47:33.073
89522
2022-06-22T13:45:07.490
2022-06-22T09:16:17.200
53185
53185
question
java
外部クラスを使用しようとしたが、コンパイル時にパッケージが見つからないと表示される


  * [javacコマンド > ユーザー・クラス・パスの指定例](https://docs.oracle.com/javase/jp/17/docs/specs/man/javac.html#example-of-specifying-a-user-class-path)

にある通り、クラスパスのセパレータはOSによって異なり、 Windowsではセミコロン `;` です。

従って、コンパイルするためのコマンドは次のようになります:

[code]

    javac -classpath .;poi-bin-5.2.2/*;poi-bin-5.2.2/lib/*;poi-bin-5.2.2/ooxml-lib/* src\*.java
    
[/code]

こういった質問は画像で提出されると状況を再現しづらいので、テキストで行ってください。


CC BY-SA 4.0
2022-06-22T13:45:07.490
89527
2022-06-22T13:45:07.490
2808
89522
answer