Eclipse起動で「org.eclipse.swt.SWTException: Unsupported or unrecognized format」というエラーの対処方法

January 23,2015 12:11 AM
Category:[Eclipse]
Tag:[Eclipse, TroubleShooting]
Permalink

Eclipseで「org.eclipse.swt.SWTException: Unsupported or unrecognized format」というエラーの対処方法を紹介します。

1.問題点

EclipseをWindowsのCドライブ直下にインストールして起動してみたところ、「An error has occured.」というダイアログが表示されました。

Eclipseのエラー「An error has occured.」

ダイアログに表示されたログを開いたところ、次の「org.eclipse.swt.SWTException: Unsupported or unrecognized format」という例外が出力されていました(抜粋)。

org.eclipse.swt.SWTException: Unsupported or unrecognized format
    at org.eclipse.swt.SWT.error(SWT.java:4441)
    at org.eclipse.swt.SWT.error(SWT.java:4356)
    at org.eclipse.swt.SWT.error(SWT.java:4327)

SWTExceptionの「SWT」とは「Standard Widget ToolKit」の略で、Eclipseプロジェクトで提供されているGUI作成用ツールキットらしいです。

ということで対処方法が不明です。

2.原因

原因をネットで調べたところ、PCにインストールされているファイルの暗号化ツールが、SWTが参照すべきファイルを暗号化してしまっているために発生したようです。

冒頭で「Cドライブ直下にインストール」と書きましたが、Cドライブ直下は暗号化ツールによる暗号化対象のフォルダとなります。

3.対処方法

暗号化対象外のフォルダ(Program Filesなど)にEclipseをインストールし直したところ、正常に起動しました。

Comments [0] | Trackbacks [0]

Perlの配列に一致する要素が格納されているインデックスを取得する方法

January 22,2015 12:55 AM
Category:[Perl]
Tag:[Perl]
Permalink

Perlの配列に一致する要素が格納されているインデックスを取得する方法を紹介します。

1.問題点

次の配列があるとします。

my @list = ( 'a', 'b', 'c', 'd', 'e', 'f', 'g' );

この配列に「c」が含まれているかどうかを調べるには、grepを用いればOKです。

#!/usr/bin/perl
 
use strict;
 
my @list = ( 'a', 'b', 'c', 'd', 'e', 'f', 'g' );
if ( grep { $_ eq 'c' } @list ) {
    print "OK";
} else {
    print "NG";
}

が、配列に一致する要素が格納されている番号を取得する方法が分かりません。

上記の例の場合、「c」が格納されているインデックス「2」を取得したいです。

2.配列に一致する要素が格納されているインデックスを取得する

配列に一致する要素が格納されているインデックスを取得するには、grepのリスト部分に配列のインデックスを渡し、インデックスを使ってブロック内で配列の値をチェックします。

grep { $list[$_] eq 'c' } 0 .. $#list;

全体のコードは次のようになります。

#!/usr/bin/perl
 
use strict;
 
my @list = ( 'a', 'b', 'c', 'd', 'e', 'f', 'g' );
my ( $result ) = grep { $list[$_] eq 'c' } 0 .. $#list;
print $result;

grepの返却値は配列ですが、マッチする値がひとつであることが分かっていれば、上のようにスカラー変数に代入すればよいでしょう。

Comments [0] | Trackbacks [0]

Eclipse起動時に「JVM is not suitable for this product」というエラーになる場合の対処

January 21,2015 12:33 AM
Category:[Eclipse]
Tag:[Eclipse, TroubleShooting]
Permalink

Eclipse起動時に「JVM is not suitable for this product」というエラーになる場合の対処方法を紹介します。

1.問題点

WindowsでEclipse起動時に次のようなエラーが発生しました。

Eclipse起動時のエラー

エラーは「Version 1.5.0_17 of the JVM is not suitable for this product. Version: 1.6 or greater is required.」となっています。

執筆時点のEclipseのバージョンは4.4(Luna)です。

2.原因

原因はメッセージの通り、Eclipse起動時に利用するJavaVM(JVM)のバージョンが古いためのようです。

古いバージョンのJavaVMを利用する原因は、他のソフトで古いバージョンのJavaVMを利用していて、そのパスが環境変数に設定されているためでした。

ということで、Eclipse起動時には別のJavaVMを使用する必要があるようです。

3.対処方法

Eclipse起動時にJavaVMを指定するには、インストールしたフォルダに含まれるeclipse.iniというファイルに、起動するJavaVMを「-vm」オプションを使って次のように指定します。

-vm
C:\Program Files\Java\jdk1.7.0_51\bin\javaw.exe

eclipse.iniへの設定イメージは次のとおりです。

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20140603-1326
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-vm
C:\Program Files\Java\jdk1.7.0_51\bin\javaw.exe
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms40m
-Xmx512m
Comments [0] | Trackbacks [0]
 1  |  2  |  3  |  4  |  5  | All pages