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

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

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

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

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

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

解決済

【質問】Struts1→SpringMVCへの移行ツールの使用

ArMigELo
ArMigELo

総合スコア76

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

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

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

1回答

0リアクション

0クリップ

701閲覧

投稿2021/06/07 01:36

編集2021/06/07 03:12

解決したいこと

Struts1→Springへ移行しようとjavaファイルを動作させようとしている。
しかし、エラーでGUIが起動しない。
このプログラムのバージョン確認方法等もわかりません。
jarのpath設定も良く分からないです。

ある程度の変換が行われれば良いと考えています。

https://github.com/shashikiranbs/Migrator
ここからダウンロードして実行しています。

VScodeに
「Java Extension Pack」
「Spring Extension Pack」
インストールしています。
使用PCのJavaバージョンは"16.0.1"

初回起動時はGUIが起動しました。
再び開こうとしたところエラーで開けません。
F5キーでデバッグをかけて起動させています。
コメントアウトをして動作確認しましたものの、エラー原因が分かりません。

何卒ご教授お願い致します。

#発生している問題・エラー

Exception in thread "main" java.lang.Error: Unresolved compilation problem:

エラー全文

PS C:\Users\mashiko\Documents\Git> c:; cd 'c:\Users\mashiko\Documents\Git'; & 'c:\Users\mashiko.vscode\extensions\vscjava.vscode-java-debug-0.34.0\scripts\launcher.bat' 'C:\Program Files\Java\jdk-16.0.1\bin\java.exe' '-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:64600' '--enable-preview' '-XX:+ShowCodeDetailsInExceptionMessages' '-Dfile.encoding=UTF-8' '@C:\Users\mashiko\AppData\Local\Temp\cp_epj5lnxwsp35chslho5r32aio.argfile' 'FrameworkMigrator' Exception in thread "main" java.lang.Error: Unresolved compilation problem: at FrameworkMigrator.main(FrameworkMigrator.java:212)

イメージ説明

該当するソースコードJAVA

package com.framework.migrator.main; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.util.List; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import com.framework.migrator.util.FileUtil; public class FrameworkMigrator { private JFrame mainFrame; private JLabel headerLabel; private JLabel statusLabel; private JPanel controlPanel; public FrameworkMigrator() { prepareGUI(); } private void prepareGUI() { mainFrame = new JFrame("Framework Migrator"); mainFrame.setSize(700, 600); mainFrame.setLayout(new GridLayout(3, 1)); mainFrame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent windowEvent) { System.exit(0); } }); headerLabel = new JLabel("", JLabel.CENTER); statusLabel = new JLabel("", JLabel.CENTER); statusLabel.setSize(450, 200); controlPanel = new JPanel(); controlPanel.setLayout(new BoxLayout(controlPanel, BoxLayout.Y_AXIS)); mainFrame.add(headerLabel); mainFrame.add(controlPanel); mainFrame.add(statusLabel); mainFrame.setVisible(true); } private void displayGUI() { headerLabel.setText("Migrator Inputs"); JLabel oldProjectPathLabel = new JLabel( "Input Project(Struts) Directory Path", JLabel.RIGHT); JLabel newProjectPathLabel = new JLabel( "Output Project(Spring) Directory Path", JLabel.RIGHT); JLabel newProjectNameLabel = new JLabel("New Project(Spring) Name", JLabel.RIGHT); final JTextField oldProjectPathField = new JTextField(10); final JTextField newProjectPathField = new JTextField(10); final JTextField newProjectNameField = new JTextField(10); JButton btnBrowse = new JButton("Browse"); btnBrowse.setBounds(10, 41, 87, 23); btnBrowse.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFileChooser fileChooser = new JFileChooser(); // For Directory fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); // For File // fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); fileChooser.setAcceptAllFileFilterUsed(false); int rVal = fileChooser.showOpenDialog(null); if (rVal == JFileChooser.APPROVE_OPTION) { oldProjectPathField.setText(fileChooser.getSelectedFile() .toString()); } } }); JButton migrateBtn = new JButton("Migrate"); migrateBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String path = newProjectPathField.getText(); String name = newProjectNameField.getText(); String inputPath = oldProjectPathField.getText(); if (StringUtils.isNotBlank(path) && StringUtils.isNotBlank("name") && StringUtils.isNotBlank("inputPath")) { process(path, name, inputPath); } } }); controlPanel.add(oldProjectPathLabel); controlPanel.add(oldProjectPathField); controlPanel.add(btnBrowse); controlPanel.add(newProjectNameLabel); controlPanel.add(newProjectNameField); controlPanel.add(newProjectPathLabel); controlPanel.add(newProjectPathField); controlPanel.add(migrateBtn); mainFrame.setVisible(true); } public void process(String path, String projectName, String inputAppPath) { /* * String path = "/Users/shashikiranbs/Downloads/"; String projectName = * "SampleSpringApp"; */ String outputAppPath = path + projectName; // String inputAppPath = // "/Users/shashikiranbs/Documents/workspace/StrutsLoginApp"; // Step 1: initialize project structure and spring basic libraries // 1.1 Create project folder @ given path try { File mainDir = new File(outputAppPath); if (!mainDir.exists()) { if (mainDir.mkdir()) { System.out.println("Directory is created!"); } else { System.out.println("Failed to create directory!"); } } // 1.2 Initial project data structure String[] initialDirs = { "src", "build/classes", "WebContent/META-INF", "WebContent/WEB-INF/lib" }; // 1.3 Creating basic project folders for (String dir : initialDirs) { File subDirs = new File(outputAppPath + "/" + dir); if (mainDir.exists()) { if (subDirs.mkdirs()) { System.out.println("Multiple directories are created!"); } else { System.out .println("Failed to create multiple directories!"); } } } // 1.4 copying spring related libraries String sourcePath = "./config/spring/lib"; String destinationPath = outputAppPath + "/WebContent/WEB-INF/lib"; FileUtils.copyDirectory(new File(sourcePath), new File( destinationPath)); // Step 2: Starts analyzing input project File[] projectDirs = new File(inputAppPath) .listFiles(new FileFilter() { @Override public boolean accept(File file) { return file.isDirectory() && (file.getName().equalsIgnoreCase("src") || file .getName().equalsIgnoreCase( "WebContent")); } }); if (projectDirs.length == 0) { System.out.println("Empty project input for migrator"); } else { for (File dir : projectDirs) { if (dir.getName().equalsIgnoreCase("src")) { for (File subDir : dir.listFiles()) { if (subDir.isDirectory()) { List<File> subDirs = FileUtil .getSubdirs(subDir); for (File folder : subDirs) { if (folder.listFiles().length != 0) { System.out.println("dirToProcess:" + folder.getCanonicalPath()); new SourceMigrateAction() .processSourceFiles(folder, inputAppPath, outputAppPath); } } } } } else if (dir.getName().equalsIgnoreCase("WebContent")) { System.out.println("dirToProcess:" + dir.getCanonicalPath()); new SourceMigrateAction().processWebContent(dir, inputAppPath, outputAppPath); } } } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws IOException { FrameworkMigrator fm = new FrameworkMigrator(); fm.displayGUI(); } }

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2021/06/07 02:02依頼された後にこの質問は修正されています

こちらの質問が複数のユーザーから「過去の低評価」という指摘を受けました。

m.ts10806

2021/06/07 01:49

移行ツールを作ろうとしているのでしょうか。質問内容的にコード見るまでそのことが分かりません。 具体的に記載願います
ArMigELo

2021/06/07 01:58

K_3578 Qiitaの質問を削除しました。
1T2R3M4

2021/06/07 01:59

>アドバイスありがとうございます。 >少しずつコメントアウトして、実行していきます。 上記に対して試行した内容及び結果を追記していただけませんか。
dodox86

2021/06/07 02:00 編集

利用されようとしているgithubのリポジトリは、ソースの更新が2016年1月と5年以上前のものですね。もともと当該アカウント氏の個人のプロジェクトなのでしょうから、公開いただいているコードを読んで自力で解決できるほどのスキルが必要だと思います。
ArMigELo

2021/06/07 01:59

m.ts10806 移行ツールを使用したいです。 F5キーでデバックをかけるとエラーになっています。
K_3578

2021/06/07 02:01

どこを読んだらqiitaの投稿を消す判断になるんです? 折角そっち側で回答してくださってた人居たのに。普通に回答した人に失礼だと思います。
ArMigELo

2021/06/07 02:01

1T2R3M4 解決していません。 エラーのままです。
ArMigELo

2021/06/07 02:01

dodox86 ご回答ありがとうございます。
m.ts10806

2021/06/07 02:02

あぁ「使用したい」か。読み違えました。失礼。 しかし、fromのバージョンとtoのバージョンが全く同じでないと意味がありません。 もしかしたら自身で影響範囲や代替機能を調査して手作業で移行したほうが確実かもしれません。 既に指摘されてる通り個人プロジェクトですし、信頼性も不確かです。
m.ts10806

2021/06/07 02:04

ちなみにこちらは回答ではなく質問への追記修正依頼のコメント欄です。
ArMigELo

2021/06/07 02:06

m.ts10806 fromバージョンの確認方法はありますか? ある程度の変換作業が自動化出来ればと考えています。
m.ts10806

2021/06/07 02:32 編集

どのように環境構築したか次第です(○○ バージョン確認 で検索して何も出ませんか?)。 あと、フレームワークとしての思想が違うのでほとんどのケースで完全自動化は無理で、調整作業に手を取られることになります。 これは言語やフレームワークに限らず。 たとえ移行ツールが動いたとして茨の道は確定してます。
ArMigELo

2021/06/07 02:40

m.ts10806 当方PCのJavaバージョンは16.0.1です。 全て変換出来る訳ありません。 ある程度の変換作業が自動化出来ればと考えています。
m.ts10806

2021/06/07 02:41

PCではなく、Strutsの。
m.ts10806

2021/06/07 02:43

あと「半端な変換をしてしまうことによる調整作業のコスト」が伝わってないように思います。 自身でこのツールを動かせないよくわかってない状態では、初めからSpringで作り直したほうが早いのは必至です。 私でも手動作り直しを選択します。
ArMigELo

2021/06/07 02:53

m.ts10806 >>fromのバージョンとtoのバージョンが全く同じでないと意味がありません。 この文言から、質問です。StrutsとSpringのバージョンが一緒になる事はあるのでしょうか? 結論は、 質問内容に答えられないので、 ツールを使わず、最初からSpringで作ったほうが良い。でよろしいでしょうか?
ArMigELo

2021/06/07 02:54

その旨を回答にお願い致します。
m.ts10806

2021/06/07 02:58

>StrutsとSpringのバージョンが一緒になる事はあるのでしょうか? 私のコメントへの理解が違います。 そのツールが対象としているStruts、Springのバージョンと質問者自身が持っているStruts、Springのバージョンがそれぞれ一致しているのか?というものです。 もちろん対象のJavaバージョンも関係しますが、フレームワークのバージョン差異の影響のほうが大きいと考えます。 >質問内容に答えられないので、 ツールを使わず、最初からSpringで作ったほうが良い 前提がおかしいです。 質問内容に答えられないから、なんて誰も言ってません。 移行ツールが動くようになったとしてバージョンの懸念も小さくないし調整に時間浪費するだけになるから最初から作るべき という話です。 回答に書かないのは移行ツールを使えるようにしたいという要件に合わないから。
m.ts10806

2021/06/07 03:00

「移行ツール使うかどうか」は質問者自身が決めることなので決めた上で自己解決にしてください。 先に指摘されてるように自分でなんとかできるようじゃないと移行ツール使っても意味がないですし、なんなら作者に問い合わせたほうが良いくらい。
ArMigELo

2021/06/07 03:04

m.ts10806 主語と述語がはっきりしていないので質問の意図が分かりませんでした。 まずGUIが起動してその後ファイルの選択になるのでその点は問題ないと考えられます。 この質問とは関係のないことなので書いて下さらなくて大丈夫です。 アドバイスありがとうございます。
m.ts10806

2021/06/07 03:57 編集

別案を受け入れる気はさらさらないと捉えました。 そして、下記の確証が取れるのであれば自己解決できますので、あとはお好きにどうぞ。 >その点は問題ないと考えられます。 ※それに質問と関係ないとは一切書いてない。曲解されてばかりの人にできるアドバイスは私は持ち合わせていません。現時点で「赤の他人」が出来ることは全部書いた
ArMigELo

2021/06/07 04:35

m.ts10806 赤の他人にここまで貴重なご意見を述べられる方はそうはいないと思います。 ありがとうございました。 次からは回答の方にご回答よろしくお願い致します。
hope_mucci

2021/06/07 14:44

表示されているエラーは「コンパイルができていない」エラーです。実行以前にソースに問題があります。(日本語で言えば、「未解決のコンパイル上の問題があります」) 表示ソースの上の方やスクロール外に赤線があるのでそこに文法エラー等がないでしょうか。 元のソースコードに文法エラーはありません。私もビルドしてみましたが正常にできました。なので自身で何等か書き換えている可能性が高いです。うっかりキー入力しまっているのかもしれません。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

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

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。