コード
前提・実現したいこと
青空文庫のテキストファイルから受け取ったルビを外して、ウインドウアプリケーション上にルビのリストを展開するアプリを制作中です。現在、ウインドウアプリケーションでルビのリストとテキストを表示するところまでできています。
複数のPCでコードを書いてデータのやりとりをしながら作業しています。jdk11.0.2のVScodeからjdk13.0.1のVScodeのpcへの移行の際に問題が発生しています。
発生している問題・エラーメッセージ
複数のPCで作業していたのですが、データ移行する際にウインドウ部分が完全に動作しなくなりました。
エラーメッセージ
最初に実行してでたエラー:
java.lang.Error: Unresolved compilation problem
:調べたところ文字コード関連のようです。動作環境のコードがUTF-8なのでメモ帳でUTF-8に変換して文字化け部分を修正し実行したところ別のエラーが出ました。
A fatal error has been detected by the Java Runtime Environment:
EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffc854af98a, pid=4992, tid=12936
JRE version: Java(TM) SE Runtime Environment (13.0.1+9) (build 13.0.1+9)
Java VM: Java HotSpot(TM) 64-Bit Server VM (13.0.1+9, mixed mode, sharing, tiered, compressed oops, g1 gc, windows-amd64)
Problematic frame:
C [awt.dll+0x8f98a]
No core dump will be written. Minidumps are not enabled by default on client versions
of Windows
C:\Users\roami\hs_err_pid4992.log
If you would like to submit a bug report, please visit:
http://bugreport.java.com/bugreport/crash.jsp
The crash happened outside the Java Virtual Machine in native code.
See problematic frame for where to report the bug.
どうやら不正アクセスに該当するエラーのようです。対処の仕様がなく行き詰っているところです。ご教授いただけますと幸いです。
該当のソースコード
長いですが全文のせます。
(Derubyは、青空文庫の本のtxtファイルを適切な形にして、漢字とルビのリストを返します。)
Java
1import javax.swing.*; 2import java.awt.*; 3import java.awt.event.*; 4import java.util.*; 5import java.io.*; 6import javax.swing.border.*; 7import javax.swing.text.*; 8import javax.swing.text.rtf.RTFEditorKit; 9class RubyFrame extends JFrame implements ActionListener{ 10 JLabel il; 11 JLabel ol; 12 JTextField it; 13 JTextField ot; 14 JButton is; 15 JButton os; 16 JCheckBox ch; 17 JButton rg; 18 JButton sm; 19 JPanel rb; 20 JTextPane ed; 21 JScrollPane s1; 22 JScrollPane s2; 23 Deruby deruby = new Deruby(); 24 LinkedList<String[]>rubyList=new LinkedList<String[]>(); 25 RubyFrame(){ 26 setTitle("テスト"); 27 setBounds(100,100,850,700); 28 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 29 il = new JLabel("変換元ファイルを指定"); 30 ol = new JLabel("変換先ファイルを指定"); 31 it = new JTextField("C:\MyGit-master\Dentaku\kappa.txt"); 32 ot = new JTextField("C:\Derubied"); 33 is= new JButton("変換元を参照"); 34 os= new JButton("変換先を参照"); 35 ch = new JCheckBox("ルビ部を辞書登録"); 36 rg = new JButton("登録"); 37 JPanel dt = new JPanel(); 38 dt.add(ch); 39 dt.add(rg); 40 sm = new JButton("変換"); 41 JPanel lt = new JPanel(); 42 rubyList=new LinkedList<String[]>(); 43 String[] rubyset = {"漢字","ルビ"}; 44 rubyList.add(rubyset); 45 lt.setLayout(new GridLayout(4,2)); 46 lt.add(il); 47 lt.add(ol); 48 lt.add(it); 49 lt.add(ot); 50 lt.add(is); 51 lt.add(os); 52 lt.add(dt); 53 lt.add(sm); 54 is.addActionListener(this); 55 os.addActionListener(this); 56 sm.addActionListener(this); 57 rg.addActionListener(this); 58 rb = new JPanel(); 59 rb.setLayout(new BoxLayout(rb, BoxLayout.Y_AXIS)); 60 if(rubyList!=null){ 61 for(String[] l:rubyList){ 62 JLabel i0=new JLabel(l[0]); 63 i0.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED)); 64 JLabel i1=new JLabel(l[1]); 65 i1.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED)); 66 JCheckBox i2 = new JCheckBox(""); 67 JPanel i3 = new JPanel(); 68 i3.setLayout(new GridLayout(1,3)); 69 i3.add(i0); 70 i3.add(i1); 71 i3.add(i2); 72 rb.add(i3); 73 } 74 } 75 s1 = new JScrollPane(rb); 76 this.add(s1,BorderLayout.WEST); 77 ed = new JTextPane(); 78 s2 = new JScrollPane(ed); 79 this.add(s2,BorderLayout.CENTER); 80 this.add(lt,BorderLayout.NORTH); 81 this.add(rb,BorderLayout.WEST); 82 this.add(ed,BorderLayout.CENTER); 83 setVisible(true); 84 } 85 public void actionPerformed(ActionEvent e){ 86 JButton button = (JButton)e.getSource(); 87 if(button.getText()=="変換元を参照"){ 88 JFileChooser fc = new JFileChooser(); 89 try{ 90 int answer=fc.showDialog(null, "決定"); 91 if (answer == JFileChooser.APPROVE_OPTION){ 92 it.setText(fc.getSelectedFile().getAbsolutePath()); 93 } 94 }catch(HeadlessException f){ 95 f.printStackTrace(); 96 } 97 }else if(button.getText()=="変換先を参照"){ 98 JFileChooser fc = new JFileChooser(); 99 fc.setFileSelectionMode(1); 100 try{ 101 int answer=fc.showDialog(null, "決定"); 102 if (answer == JFileChooser.APPROVE_OPTION){ 103 ot.setText(fc.getSelectedFile().getAbsolutePath()); 104 } 105 }catch(HeadlessException f){ 106 f.printStackTrace(); 107 } 108 }else if(button.getText()=="変換"){ 109 rubyList=deruby.delete(it.getText(),ot.getText()+"\tmp.txt"); 110 rb.removeAll(); 111 this.remove(s1); 112 this.remove(s2); 113 if(rubyList!=null){ 114 for(String[] l:rubyList){ 115 JLabel i0=new JLabel(l[0]); 116 i0.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED)); 117 JLabel i1=new JLabel(l[1]); 118 i1.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED)); 119 JCheckBox i2 = new JCheckBox(""); 120 JPanel i3 = new JPanel(); 121 i3.setLayout(new GridLayout(1,3)); 122 i3.add(i0); 123 i3.add(i1); 124 i3.add(i2); 125 rb.add(i3); 126 } 127 128 } 129 s1 = new JScrollPane(rb,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 130 this.add(s1,BorderLayout.WEST); 131 ed.setText(""); 132 FileInputStream fis=null; 133 InputStreamReader in=null; 134 BufferedReader reader=null; 135 String doc =""; 136 try{ 137 fis = new FileInputStream(ot.getText()+"\tmp.txt"); 138 }catch(FileNotFoundException f){ 139 f.printStackTrace(); 140 }try{ 141 in = new InputStreamReader(fis,"UTF-8"); 142 }catch(UnsupportedEncodingException f){ 143 f.printStackTrace(); 144 } 145 reader = new BufferedReader(in); 146 String p=null; 147 try{ 148 while((p=reader.readLine())!=null){ 149 // while(true){ 150 // if(p.length()>=leg){ 151 // doc=""+doc+p.substring(0,leg-1)+"\n"; 152 // p=p.substring(leg-1,p.length()); 153 // }else{ 154 doc=""+doc+p+"\n"; 155 // break; 156 // } 157 // } 158 } 159 }catch(IOException f){ 160 f.printStackTrace(); 161 } 162 ed.setText(doc); 163 s2 = new JScrollPane(ed,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 164 this.add(s2,BorderLayout.CENTER); 165 revalidate(); 166 }else{ 167 168 } 169 } 170 171 public static void main(String[] args){ 172 new RubyFrame(); 173 } 174} 175``` 176### 試したこと 177文字コードの確認、変更、githubやUSBなど複数の方法での移行等 178### 補足情報(FW/ツールのバージョンなど) 179VSCode&jdk1.0.2からVScode&jdk13.0.1への移行中
回答1件
あなたの回答
tips
プレビュー