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

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

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

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

Apache

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

Java

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

Q&A

解決済

2回答

3840閲覧

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

takuan_55

総合スコア13

Javadoc

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

Apache

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

Java

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

0グッド

0クリップ

投稿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

1package Create_Confirmation; 2 3import java.awt.BorderLayout; 4import java.awt.Container; 5import java.awt.event.ActionEvent; 6import java.awt.event.ActionListener; 7 8import javax.swing.JButton; 9import javax.swing.JFrame; 10import javax.swing.JPanel; 11 12class StartButton extends JFrame{ 13 public static void main(String args[]){ 14 StartButton frame = new StartButton("リストメイキング"); 15 frame.setVisible(true); 16 } 17 18 StartButton(String title){ 19 setTitle(title); 20 setBounds(100, 100, 600, 400); 21 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 22 23 JButton button1 = new JButton("顧客名★★"); 24 25 JPanel p = new JPanel(); 26 p.add(button1); 27 28 Container contentPane = getContentPane(); 29 contentPane.add(p, BorderLayout.CENTER); 30 31 button1.addActionListener(new ActionListener() { 32 @Override 33 public void actionPerformed(ActionEvent e) { 34 String basketID = "顧客名★★"; 35 Main.main(basketID); 36 } 37 }); 38 } 39}

Java

1package Create_Confirmation; 2 3import java.io.File; 4import java.util.ArrayList; 5import java.util.List; 6 7public class Main { 8 9 static List<String[]>listData; 10 11 public static void main(String basketID) { 12 String fileName = null; 13 String csvName = null; 14 15 try { 16 //顧客別 17 String wbName = "【provisional】";//csvのファイル名 18 19 //Confirmationの生成用データの中身 20 List<String[]> listConf = new ArrayList<String[]>(); 21 22 //Entryクラスから呼び出す 23 String stringToday = Entry.DateStringChange(); //日付データ 24 int integerToday = Entry.DateIntegerChange(stringToday); //日付データ 25 int[] sendArray = Entry.DataTodayExchange(integerToday); //日付データ 26 listData= Entry.PPPExchange(basketID); //全データ呼び出し 27 List<String[]>listCommissionData= Entry.DataCommission(basketID); //手数料全データ呼び出し 28 29 //手数料率データ 30 String[] commissionRateStr = Culc.CulcCommission(listCommissionData, basketID); 31 32 //Confirmationの基準データ作成 33 listConf = Culc.PPPAverage(listData, commissionRateStr); 34 if(commissionRateStr[1].equals("1.0")) { 35 listConf.remove(listConf.size()-1); 36 } 37 38 //出力設定 39 switch (basketID) { 40 case "顧客名★★" : 41 if (listConf.size() !=0) { 42 wbName = "顧客名★★"; 43 } 44 fileName = 顧客名★★.PPPWriting(listConf, sendArray,basketID, wbName); 45 break; 46 } 47 48 //ファイル名は例【provisional】_yyyymmddが作成される 49 File inputFile = new File(fileName); 50 csvName = fileName.replace("\\excel\\","\\csv\\"); 51 csvName = csvName.replace(".xlsx",".csv"); 52     File outputFile = new File(csvName); 53 Converter.CSVConvert(inputFile, outputFile); 54 Converter.SendMail(csvName); 55 56 } catch (Exception e) { 57 e.printStackTrace(); 58 System.out.println("処理が失敗しました"); 59 } 60 } 61}

Java

1package Create_Confirmation; 2 3import java.io.FileInputStream; 4import java.text.SimpleDateFormat; 5import java.util.ArrayList; 6import java.util.Date; 7import java.util.List; 8 9import org.apache.poi.hssf.usermodel.HSSFCell; 10import org.apache.poi.hssf.usermodel.HSSFRow; 11import org.apache.poi.hssf.usermodel.HSSFSheet; 12import org.apache.poi.hssf.usermodel.HSSFWorkbook; 13 14//Excelファイルを読み込む 15public class Entry { 16 17 static HSSFWorkbook wb; 18 19 //本日日付を文字列に変更する 20 static String DateStringChange() { 21 22 Date today = new Date(); 23 SimpleDateFormat dateForm = new SimpleDateFormat("yyyyMMdd"); 24 String stringToday = dateForm.format(today); 25 return stringToday; 26 } 27 28 //本日日付を数値に変更する 29 static int DateIntegerChange(String stringToday) { 30 int integerToday = Integer.valueOf(stringToday); 31 return integerToday; 32 } 33 //1営業日前のデータを抽出する 34 public static int[] DataTodayExchange(int integerToday ) { 35 36 int[] sendArray = new int[6]; 37 38 try { 39 wb = new HSSFWorkbook(new FileInputStream("\\\\社内サーバ\\社内サーバA\\フォルダ名\\営業日.xls")); 40 HSSFSheet sheet = wb.getSheet("シート名◎◎"); 41 HSSFRow row = null;//行 42 HSSFCell cell = null;//列 43 int day; 44 45 //行ごとの値 46 for (int rowIndex = 1; rowIndex <= sheet.getLastRowNum(); ) { 47 row = sheet.getRow(rowIndex); 48 int[] arrayArg = new int[6]; 49 //列ごとの値 50 for(int columnIndex = 0; columnIndex<= arrayArg.length-1 ;columnIndex++) { 51 52 cell = row.getCell(columnIndex); 53 day = (int) cell.getNumericCellValue(); 54 arrayArg[columnIndex] = day; 55 } 56 if(arrayArg[0]==integerToday){ 57 58 for(int i = 0; i<= sendArray.length-1; i++) { 59 sendArray[i] = arrayArg[i]; 60 } 61 } 62 rowIndex = rowIndex +1; 63 } 64 65 } catch (Exception e) { 66 e.printStackTrace(); 67 System.out.println("処理が失敗しました"); 68 } 69 return sendArray; 70 } 71 //手数料のデータを抽出する 72 public static List<String[]> DataCommission(String bascketID) { 73 74 List<String[]>listData = new ArrayList<String[]>(); 75 try { 76 wb = new HSSFWorkbook(new FileInputStream("\\\\社内サーバ\\社内サーバA\\フォルダ名\\お客さん.xls")); 77 HSSFSheet sheet = wb.getSheet("シート名△△"); 78 HSSFRow row = sheet.getRow(0);//行 79 HSSFCell cell = row.getCell((short) 1);//列 80 String data_Commission; 81 82 for (int rowIndex = 1; rowIndex <= sheet.getLastRowNum();) { 83 84 row = sheet.getRow(rowIndex); 85 String[] arrayArg = new String[12]; 86 87 for(int columnIndex = 0; columnIndex <= arrayArg.length-1;) { 88 89 cell = row.getCell(columnIndex); 90 91 Object data = Culc.getCellValue(cell); 92 data_Commission = String.valueOf(data); 93 //バスケットIDの修正 94 if (data_Commission.contains("顧客名★")) { 95 data_Commission = "顧客名★★"; 96 } 97 arrayArg[columnIndex] = data_Commission; 98 99 columnIndex = columnIndex+1; 100 } 101 102 if(arrayArg[2].contains(bascketID)) { 103 listData.add(arrayArg); 104 } 105 rowIndex = rowIndex+1; 106 } 107 108 } catch (Exception e) { 109 e.printStackTrace(); 110 System.out.println("処理が失敗しました"); 111 } 112 return listData; 113 } 114 115 //夜間のデータファイル読み込み 116 public static List<String[]> PPPExchange(String bascketID) { 117 118 List<String[]>listData = new ArrayList<String[]>(); 119 120 try { 121 wb = new HSSFWorkbook(new FileInputStream("\\\\社内サーバ\\社内サーバA\\フォルダ名\\PPP.xls")); 122 HSSFSheet sheet = wb.getSheet("Sheet1"); 123 HSSFRow row = sheet.getRow(0);//行 124 HSSFCell cell = row.getCell((short) 1);//列 125 String data_PPP; 126 127 for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) { 128 row = sheet.getRow(rowIndex); 129 String[] arrayArg = new String[23]; 130 131 for(int columnIndex = 0; columnIndex <= arrayArg.length-2;) { 132 133 cell = row.getCell(columnIndex); 134 135 Object data = Culc.getCellValue(cell); 136 data_PPP = String.valueOf(data); 137 138 //小数点がない場合の処理 小数点以下を消す 139 if (data_PPP.contains(".0")){ 140 data_PPP = data_PPP.replace(".0", ""); 141 } 142 //顧客名★★のバスケットID対応 143 if(data_PPP.equals("顧客名★★1")) { 144 data_PPP = "顧客名★★1"; 145 }else if (data_PPP.equals("顧客名★★2")) { 146 data_PPP = "顧客名★★2"; 147 }else if (data_PPP.equals("顧客名★★3")) { 148 data_PPP = "顧客名★★3"; 149 }else if (data_PPP.equals("顧客名★★4")) { 150 data_PPP = "顧客名★★4"; 151 } 152 arrayArg[columnIndex] = data_PPP; 153 columnIndex = columnIndex+1; 154 } 155 arrayArg[22] = "PPP"; 156 if(arrayArg[11].contains(bascketID)) { 157 listData.add(arrayArg); 158 } 159 } 160 } catch (Exception e) { 161 e.printStackTrace(); 162 System.out.println("処理が失敗しました"); 163 } 164 return listData; 165 } 166 167 } 168}

試したこと

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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
guest

回答2

0

C:\Users\****>java -classpath C:\Java作業\test\202207\Create_Confirmation\src\Create_Confirmation\confirmation.jar

この部分が、起動したときのコマンドですね。

... java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Cell

classpathにApache POIのjarファイルが指定されていないから、でしょう。Apache POIのjarファイル、Apache POIが参照しているjarファイルをとにかくすべてをclasspathに指定する必要がある。Eclipseはそれをやってくれている。自力でjavaコマンドから起動するのであれば、自分でそれらをすべて指定する必要がある。

--- ; の後で改行しないように --- C:\Users\****>java -classpath C:\Java作業\test\202207\Create_Confirmation\src\Create_Confirmation\confirmation.jar; poi-5.2.2.jar; poi-ooxml-5.2.2.jar; xxx.jar; yyy.jar; zzz.jar; ...

投稿2022/08/08 09:16

編集2022/08/08 09:19
shiketa

総合スコア4041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takuan_55

2022/08/09 00:44

ご連絡をありがとうございます。 今朝、試しました。 外部ライブラリ設定をしたjarファイルが27、私が作成したjarファイルが1あります。 コマンドプロンプトには以下記述しました。 ----------- C:\Users\****>java -classpath C:\Users\****\confirmation.jar;cmc-smtp.jar;log4j-1.2-api-2.17.2.jar;mail.jar;log4j-core-2.17.2.jar;commons-codec-1.15.jar;commons-collections4-4.4.jar;commons-compress-1.21.jar;commons-compress-1.21-javadoc.jar;commons-compress-1.21-sources.jar;commons-compress-1.21-tests.jar;commons-compress-1.21-test-sources.jar;commons-email-1.5.jar;commons-io-2.11.0.jar;commons-logging-1.2.jar;commons-math3-3.6.1.jar;curvesapi-1.07.jar;javax.activation-1.2.0.jar;javax.mail.jar;poi-5.2.2.jar;poi-examples-5.2.2.jar;poi-excelant-5.2.2.jar;poi-javadoc-5.2.2.jar;poi-ooxml-5.2.2.jar;poi-ooxml-full-5.2.2.jar;poi-ooxml-lite-5.2.2.jar;poi-scratchpad-5.2.2.jar;xmlbeans-5.0.3.jar Create_Confirmation.StartButton ---------- エラー文は変わらずjava.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Cell でした。 何か不足があるのでしょうか。
shiketa

2022/08/09 01:37

不足が、あるのでしょう。 org.apache.poi.ss.usermodel.Cellクラスが含まれているjarファイルが漏れているのでしょう。探して追加してみてはいかがかと。
shiketa

2022/08/09 01:39

ああ。 あと、jarファイルの指定にパスが抜けているのではないでしょうか。ぜんぶのjarファイルをカレントディレクトリに置いてあるのですかな。 java -classpath ...;c:\aa\bb\cc\poi.jar;...
takuan_55

2022/08/09 04:24

shiketaさん 回答をありがとうございます。 全てのjarファイルをカレントディレクトリ(Create_Confirmation)に配置しています。 jarファイルの漏れがないように、すべてのjarファイルが選択できるようワイルドカードを用いてみました。 ----------- java -classpath .;C:\Java作業\test\202207\Create_Confirmation\src\Create_Confirmation\*; Create_Confirmation.StartButton エラー文: java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager ----------- それでもエラーが出力されるので、jarファイルをすべて保管したディレクトリにアクセスすると、 ----------- java -classpath .;C:\Java作業\test\ライブラリ\*;C:\Java作業\test\202207\Create_Confirmation\src\Create_Confirmation\*; Create_Confirmation.StartButton エラー文: java.lang.ExceptionInInitializerError ----------- webサイトでorg/apache/poi/ss/usermodel/Cellを調べると、 apache poiのサイトにたどり着きますが、jarファイルとしてダウンロードできないようです。 apache poiのサイトからコピー&ペーストしたクラスを作るべきなのか、 eclipseでは読み込んでいて、コマンドプロンプトで読み込まれていないクラスがあるのでしょうか。
shiketa

2022/08/09 13:01 編集

> エラー文: java.lang.ExceptionInInitializerError これだけ見せられても、へー、以上はなにもいえませんね。 --- もし、わたしがそんなツールをつくるとしたら、ですが。 わたしなら最終成果物として、全部入りのexecutable jarファイルを作ります。 executable jarファイルを作って、 java -jar tool.jar で起動する。いちいちclasspathは指定しない。 こまかいことは shadowjar とか fat jar でgoogleに訊いてください。gradleとかmavenも訊く必要があるかもしれません。
takuan_55

2022/08/10 01:21

shiketaさん ありがとうございました。 一旦、仕切り直しをしてeclipseでパッケージごと「実行可能jarファイル」を作成し、 コマンドプロンプトで C:\Users\****>java -classpath C:\Java作業\test\202207\Create_Confirmation\src\Create_Confirmation\* Create_Confirmation.StartButton と 入力することでできました。 全部入りのjarファイルというアイデアをありがとうございました!
guest

0

自己解決

<以下はコンパイル済みの段階です>
結局、原因は不明です。Eclipseでは実行できるのだから、質問者(私)の記述に漏れがあったのかと。

①使用する外部ライブラリ全てをパッケージのディレクトリにまとめる

今回の場合、「src\Create_Confirmation」がパッケージのディレクトリになります。
C:\Users*****>java -classpath C:\Java作業\test\202207\Create_Confirmation\src\Create_Confirmation*

②パッケージのディレクトリ内にソースファイルを作成する

Eclipseにてソースファイルを作成します。

③Eclipseのパッケージ・エクスプローラから実行可能jarファイルを作成する

Eclipseのパッケージ・エクスプローラのディレクトリを右クリック
エクスポート→実行可能jarファイル

起動構成:Mainメソッドのあるクラス-パッケージ名
エクスポート先:パッケージのディレクトリ\任意のファイル名
ライブラリ処理:生成されるJARに必須ライブラリを抽出 を選択後、
完了を押下する。

④コマンドプロンプトで実行

以下実行コマンドです。(一部ぼかしあり)

C:\Users****>java -classpath C:\Java作業\test\202207\Create_Confirmation\src\Create_Confirmation(ワイルドカード) Create_Confirmation.StartButton

以上でエラーなく実行することができました!
ご協力していただいた回答者の方、ありがとうございました。
全部入りのjarファイル」をキーワードにしました。

投稿2022/08/10 01:47

編集2022/08/10 01:56
takuan_55

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問