質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Javadoc

Javadocは、Java言語で記述されたクラスライブラリ、及びアプリケーションについてのパッケージ・クラス・メソッドのHTML形式のAPI仕様書のことを指します。ドキュメント更新の漏れを減らすことができ、最新の状態を把握することが可能になります。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

解決済

[Java] コンパイルはできるのに実行できない java.lang.NoClassDefFoundError

takuan_55
takuan_55

総合スコア8

Javadoc

Javadocは、Java言語で記述されたクラスライブラリ、及びアプリケーションについてのパッケージ・クラス・メソッドのHTML形式のAPI仕様書のことを指します。ドキュメント更新の漏れを減らすことができ、最新の状態を把握することが可能になります。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

2回答

0評価

0クリップ

490閲覧

投稿2022/08/08 06:28

前提

Java初心者です。金融系のプログラムを作成しています。
全部で7クラスあり、
・起動するためのボタンを配置したクラス (StartButton.java)
・メインクラス(Main.java)
・apache.poiを用いてexcelのデータを読み込むクラス(Entry.java)
・お客さんの名前でデータを区別するクラス(Culc.java)
・お客さんの要望通りのフォームでexcel出力するスーパークラス(Output.java)
・お客さんの要望通りのフォームでexcel出力するクラス(顧客名★★.java)
・excelをcsv変換してメール送信をするクラス(Converter.java)

Javaのプログラムについては、Eclipse上でエラーなく実行できることが確認できています。

実現したいこと

エラーなく実行できるようにしたいです。
拡張することも視野に入れていますので、できるだけJavaのコードを変えたくないです。

発生している問題・エラーメッセージ

コマンドプロンプトで動かすと、StartButton画面が出力されますが、
StartButton画面のボタンを押下するとエラーメッセージが出力されてしまいます。

Windows10にコンパイルしたものの、以下エラーが出力されるため、実行するとエラーが出力されてしまいます。
全体は7クラスありますが、エラーを吐き出すのはEntryクラスのため、
StartButton Main Entryまでを記載します。

※プログラムは一部ぼかしています。

C:\Users\****>java -classpath C:\Java作業\test\202207\Create_Confirmation\src\Create_Confirmation\confirmation.jar Create_Confirmation.StartButton Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Cell at Create_Confirmation.Main.main(Main.java:23) at Create_Confirmation.StartButton$1.actionPerformed(StartButton.java:39) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)

該当のソースコード

Java

package Create_Confirmation; import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; class StartButton extends JFrame{ public static void main(String args[]){ StartButton frame = new StartButton("リストメイキング"); frame.setVisible(true); } StartButton(String title){ setTitle(title); setBounds(100, 100, 600, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton button1 = new JButton("顧客名★★"); JPanel p = new JPanel(); p.add(button1); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); button1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String basketID = "顧客名★★"; Main.main(basketID); } }); } }

Java

package Create_Confirmation; import java.io.File; import java.util.ArrayList; import java.util.List; public class Main { static List<String[]>listData; public static void main(String basketID) { String fileName = null; String csvName = null; try { //顧客別 String wbName = "【provisional】";//csvのファイル名 //Confirmationの生成用データの中身 List<String[]> listConf = new ArrayList<String[]>(); //Entryクラスから呼び出す String stringToday = Entry.DateStringChange(); //日付データ int integerToday = Entry.DateIntegerChange(stringToday); //日付データ int[] sendArray = Entry.DataTodayExchange(integerToday); //日付データ listData= Entry.PPPExchange(basketID); //全データ呼び出し List<String[]>listCommissionData= Entry.DataCommission(basketID); //手数料全データ呼び出し //手数料率データ String[] commissionRateStr = Culc.CulcCommission(listCommissionData, basketID); //Confirmationの基準データ作成 listConf = Culc.PPPAverage(listData, commissionRateStr); if(commissionRateStr[1].equals("1.0")) { listConf.remove(listConf.size()-1); } //出力設定 switch (basketID) { case "顧客名★★" : if (listConf.size() !=0) { wbName = "顧客名★★"; } fileName = 顧客名★★.PPPWriting(listConf, sendArray,basketID, wbName); break; } //ファイル名は例【provisional】_yyyymmddが作成される File inputFile = new File(fileName); csvName = fileName.replace("\\excel\\","\\csv\\"); csvName = csvName.replace(".xlsx",".csv");     File outputFile = new File(csvName); Converter.CSVConvert(inputFile, outputFile); Converter.SendMail(csvName); } catch (Exception e) { e.printStackTrace(); System.out.println("処理が失敗しました"); } } }

Java

package Create_Confirmation; import java.io.FileInputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; //Excelファイルを読み込む public class Entry { static HSSFWorkbook wb; //本日日付を文字列に変更する static String DateStringChange() { Date today = new Date(); SimpleDateFormat dateForm = new SimpleDateFormat("yyyyMMdd"); String stringToday = dateForm.format(today); return stringToday; } //本日日付を数値に変更する static int DateIntegerChange(String stringToday) { int integerToday = Integer.valueOf(stringToday); return integerToday; } //1営業日前のデータを抽出する public static int[] DataTodayExchange(int integerToday ) { int[] sendArray = new int[6]; try { wb = new HSSFWorkbook(new FileInputStream("\\\\社内サーバ\\社内サーバA\\フォルダ名\\営業日.xls")); HSSFSheet sheet = wb.getSheet("シート名◎◎"); HSSFRow row = null;//行 HSSFCell cell = null;//列 int day; //行ごとの値 for (int rowIndex = 1; rowIndex <= sheet.getLastRowNum(); ) { row = sheet.getRow(rowIndex); int[] arrayArg = new int[6]; //列ごとの値 for(int columnIndex = 0; columnIndex<= arrayArg.length-1 ;columnIndex++) { cell = row.getCell(columnIndex); day = (int) cell.getNumericCellValue(); arrayArg[columnIndex] = day; } if(arrayArg[0]==integerToday){ for(int i = 0; i<= sendArray.length-1; i++) { sendArray[i] = arrayArg[i]; } } rowIndex = rowIndex +1; } } catch (Exception e) { e.printStackTrace(); System.out.println("処理が失敗しました"); } return sendArray; } //手数料のデータを抽出する public static List<String[]> DataCommission(String bascketID) { List<String[]>listData = new ArrayList<String[]>(); try { wb = new HSSFWorkbook(new FileInputStream("\\\\社内サーバ\\社内サーバA\\フォルダ名\\お客さん.xls")); HSSFSheet sheet = wb.getSheet("シート名△△"); HSSFRow row = sheet.getRow(0);//行 HSSFCell cell = row.getCell((short) 1);//列 String data_Commission; for (int rowIndex = 1; rowIndex <= sheet.getLastRowNum();) { row = sheet.getRow(rowIndex); String[] arrayArg = new String[12]; for(int columnIndex = 0; columnIndex <= arrayArg.length-1;) { cell = row.getCell(columnIndex); Object data = Culc.getCellValue(cell); data_Commission = String.valueOf(data); //バスケットIDの修正 if (data_Commission.contains("顧客名★")) { data_Commission = "顧客名★★"; } arrayArg[columnIndex] = data_Commission; columnIndex = columnIndex+1; } if(arrayArg[2].contains(bascketID)) { listData.add(arrayArg); } rowIndex = rowIndex+1; } } catch (Exception e) { e.printStackTrace(); System.out.println("処理が失敗しました"); } return listData; } //夜間のデータファイル読み込み public static List<String[]> PPPExchange(String bascketID) { List<String[]>listData = new ArrayList<String[]>(); try { wb = new HSSFWorkbook(new FileInputStream("\\\\社内サーバ\\社内サーバA\\フォルダ名\\PPP.xls")); HSSFSheet sheet = wb.getSheet("Sheet1"); HSSFRow row = sheet.getRow(0);//行 HSSFCell cell = row.getCell((short) 1);//列 String data_PPP; for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) { row = sheet.getRow(rowIndex); String[] arrayArg = new String[23]; for(int columnIndex = 0; columnIndex <= arrayArg.length-2;) { cell = row.getCell(columnIndex); Object data = Culc.getCellValue(cell); data_PPP = String.valueOf(data); //小数点がない場合の処理 小数点以下を消す if (data_PPP.contains(".0")){ data_PPP = data_PPP.replace(".0", ""); } //顧客名★★のバスケットID対応 if(data_PPP.equals("顧客名★★1")) { data_PPP = "顧客名★★1"; }else if (data_PPP.equals("顧客名★★2")) { data_PPP = "顧客名★★2"; }else if (data_PPP.equals("顧客名★★3")) { data_PPP = "顧客名★★3"; }else if (data_PPP.equals("顧客名★★4")) { data_PPP = "顧客名★★4"; } arrayArg[columnIndex] = data_PPP; columnIndex = columnIndex+1; } arrayArg[22] = "PPP"; if(arrayArg[11].contains(bascketID)) { listData.add(arrayArg); } } } catch (Exception e) { e.printStackTrace(); System.out.println("処理が失敗しました"); } return listData; } } }

試したこと

Eclipse上でjarファイルを作成し、コンパイルまで実行しました。
classpathは設定済みです。

補足情報(FW/ツールのバージョンなど)

Windows10
Java 8
Apache.poi 5-2-2 使用

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

takuan_55

2022/08/08 06:45

10,000字制限のため、 エラー部分は省略してしまいました。 正しくは以下の通りです。 Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Cell at Create_Confirmation.Main.main(Main.java:23) at Create_Confirmation.StartButton$1.actionPerformed(StartButton.java:39) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6616) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3398) at java.desktop/java.awt.Component.processEvent(Component.java:6381) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4991) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4823) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4823) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.Cell at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 37 more

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Javadoc

Javadocは、Java言語で記述されたクラスライブラリ、及びアプリケーションについてのパッケージ・クラス・メソッドのHTML形式のAPI仕様書のことを指します。ドキュメント更新の漏れを減らすことができ、最新の状態を把握することが可能になります。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。