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

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

新規登録して質問してみよう
ただいま回答率
85.50%
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サーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Q&A

解決済

1回答

2158閲覧

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

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サーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

0グッド

0クリップ

投稿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(); } }

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

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

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

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

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

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

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

回答1

0

自己解決

何度か再解凍して起動を繰り替えしていたものの、動作しませんでした。
しかし、デスクトップからドキュメントにフォルダを移動すると、GUIが起動しました。
もしかしたら、ワークスペースを新しくしたことで改善されたのかもしれません。

回答しない謎の人物、話を質問の内容から違う方向に持っていく方、
他の方にも迷惑なので思ったことを、すぐ書かないで論理的に考えてから書いた方がいいですよ?

投稿2021/06/07 23:17

編集2021/06/07 23:23
ArMigELo

総合スコア76

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問