Java SWTのビルドにおける問題と対処方法

このQ&Aのポイント
  • eclipse4.3(java 1.7)の64-bit swt環境で、Javaのswtのサンプル(snippet)をサイトからコピーしてpurojectを作成しましたが、ビルドが通りません。原因は48行目のイベントハンドラの書式にあります。
  • 48行目のイベントハンドラの書式が問題であり、昔の構文に戻すことで問題が解決します。
  • 新しい構文である48行目のイベントハンドラは、いつから導入されたのでしょうか?コンパイルを通すためには、昔の構文に変更する必要があります。
回答を見る
  • ベストアンサー

eclipse.swt.snippets のビルド

eclipse4.3(java 1.7)の64-bit swt環境で、Javaのswtのサンプル(snippet)をサイトからコピーしてpurojectを作成しましたがビルドが通りません。 http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet2.java 原因は48行目のイベントハンドラの書式 Listener sortListener = e -> { にあるようで、以下の昔の構文にするとコンパイルが通ります。 Listener sortListener = new Listener() { @Override public void handleEvent(Event e) { 48行目のような構文は、何時から出てきたのでしょうか? 48行目の構文のままコンパイルを通すにはどうすれば良いでしょうか? よろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • KSOH
  • ベストアンサー率93% (29/31)
回答No.1

この構文はJava1.8(現在の最新バージョンで一般にJava8と呼ばれてます)から 導入されたものです。ラムダ式というやつですね。 Java1.8を導入すればよいので、以下の手順でできると思います。 1. Oracleのサイトから1.8(現在最新は1.8u102ですね)をダウンロード・インストール 2. eclipse上でJDK1.8を使うことを登録しておく  メニューWindow->Preferences->Java->Installed JREs 3. プロジェクトで実行時に使用するJREを1.7->1.8へ切り替え  メニューProject->Properties->Java Build Path->Libraries 4. プロジェクトのソースが1.8前提であることを設定  メニューProject->Properties->Java Compiler->Compiler compliance level

関連するQ&A

  • eclipseでSWTのアプリケーションが実行できない

    eclipse3.0にVisualEditerを入れています。 しかしSWTのアプリケーションが実行できずに困っています。 ビルドまではできているようなのですが、 実行しようとすると、 java.lang.UnsatisfiedLinkError: no swt-win32-3064 in java.library.path とコンソールにでています。 プロパティで見ると、Jarを追加とあるのですが、swt-win32-3064は\eclipse-SDK-3.0.2-win32\eclipse\plugins\org.eclipse.swt.win32_3.0.2\os\win32\x86 に存在するものの、dllです。 なにをどうすればいいのかわからないです。 何か気がついた点がある方よろしくお願いします。

    • ベストアンサー
    • Java
  • eclipseで再コンパイルしたら動かなくなった。

    eclipseで一度動いていたソースを再コンパイルしたら以下のエラーが 出ました。 どこがいけないのでしょうか? 2011/03/07 18:44:02 org.apache.catalina.core.ApplicationDispatcher invoke 致命的: サーブレット jsp のServlet.service()が例外を投げました java.lang.Error: コンパイル問題が未解決です。 構文エラーがあります。")" を挿入して MethodInvocation を完了してください。 構文エラーがあります。";" を挿入して Statement を完了してください。 onClick を解決できません。 トークン "Invalid Character" に構文エラーがあります。( が無効です。

  • SWTでWindowsアプリケーションをつくりたい

    こんにちは、私初心者ですが、是非ご指導を宜しくお願いします。 Eclipseで簡易のブラウザーを作ったのですが、 それをJARファイルにまとめて、ダブルクリックしても、 could not find the main class. Program will exit という表示が出てしまいます。 また、コマンドプロンプトで、  C:\>java -jar miniBrowser.jar と入力すると、 Exception in thread "main" java.lang.NoClassDefFoundError : org/eclipse/swt/widgets/Composite といったエラーになります。どなたかご回答を宜しく。

    • ベストアンサー
    • Java
  • SWT CTabFolderのタブ移動

    CTabFolderのタブを別のWidgets(例えば別のCTabFolder, もしくはSashForm) にドラッグ&ドロップで移動させることを考えています。丁度Eclipseのエディタタブのような挙動をさせるのが目標です。 Eclipseのソースもどこをみてよいやら困り果ててしまい、参考になるサイトを探したところ、 http://dev.eclipse.org/newslists/news.eclipse.platform.swt/msg04529.html に異なるCTabFolder間のタブ移動を実現する方法が載っているようでした。 しかし肝心のソース部分が begin 666 Dndtest.java M:6UP;W)T(&]R9RYE8VQI<'-E+FIF86-E+G=I;F1O=RXJ.PT*:6UP;W)T(&]R M9RYE8VQI<'-E+G-W="XJ.PT*:6UP;W)T(&]R9RYE8VQI<'-E+G-W="YC=7-T ...(以下略 上記URL参照) という風に私には解読不能な文字列になっていて読めませんでした。 base64ではないですよね。何か別のフォーマットでしょうか? CTabFolder上のタブ移動に関する手法をご存知の方がいらっしゃればアドバイスをお願いします。 また、上の暗号化?されたソースを復元する方法をご教授下さい。

    • ベストアンサー
    • Java
  • EclipseでJSPのコンパイルエラー

    過去に開発したWebアプリをEclipseを使用して再開発し直してみようと挑戦中ですが、以下のエラーが解決できず困っています。 ***** org.apache.jasper.JasperException: JSPのクラスをコンパイルできません JSPファイル: null の中の行: -1でエラーが発生しました 生成されたサーブレットのエラーです: [javac] Compiling 1 source file E:\AddProgram\Eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Standalone\localhost\XXX\login_jsp.java:10: java.lang.Object にアクセスできません。 クラスファイル E:\AddProgram\Eclipse\eclipse\jre\lib\rt.jar(java/lang/Object.class) は不正です。 クラスファイルのバージョン 49.0 は不正です。48.0 であるべきです。 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。 public class login_jsp extends HttpJspBase { ^ エラー 1 個 ***** Javaビルドパス-クラスパス変数は j2sdk1.4.2\jre\lib\rt.jarになっているし、 Javaコンパイラーの準拠レベルは1.4になっているし、 JAVA_HOMEやPATHもj2sdk1.4.2、j2sdk1.4.2\binになっているんですが、何故別のjarを参照してしまっているのでしょうか? Eclipseの再起動、JRE1.4.2の再インストールなども試みましたが、解決せず悩んでいます。解決方法をご存知の方、ご教授ください。 ■環境(最終的に落ち着いた使用バージョンは以下の通り。) ・EclipsePleiadesAllinOneJava3_4_2 ・java 1.4.2 ・Tomcat 4.1.31 ・Apache 2.0.53 ・MySQL 4.0.25

    • ベストアンサー
    • Java
  • handleEvent() が非推奨

    handleEvent() をコンパイラが非推奨だと言います。 警告の出ないソースにするにはどうしたらいいんですか? たぶん、 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); } }); のようなソースを使えばいいんだと思うけど、 どのように組み込むのかが分かりません。 import java.awt.*; public class Test extends java.applet.Applet { Frame f = new MyFrame(""); public void init() { f.setSize(100, 100); f.show(); } public boolean handleEvent(Event e) { if(e.id == Event.WINDOW_DESTROY) f.dispose(); return super.handleEvent(e); } }

    • ベストアンサー
    • Java
  • Eclipseの虎の巻が表示されない

    分かる方がいましたら教えてください。 自宅でJAVAの勉強をしようと思い、Eclipseを設定したのですが、初心者用の虎の巻(Hello Worldアプリケーションの作成)が表示できません。どなたか理由がわかる人がいましたら教えてください。 Eclipseのチュートリアルから、「Hello Worldアプリケーションの作成」を選択すると、次のようなエラーになってしまいます。 「次の ID を持つ待機コンテンツ・パーツの作成に失敗しました: org.eclipse.platform.cheatsheet。 詳細についてはログ・ファイルを調べてください。」 ちなみに、日本語化の設定をしない場合は、英語ですが正しく表示されているように思えます。 現在設定したのは以下の通りです。 ・Eclipse3.3.0をC:\直下に展開 ・JDK:「C:\Program Files\Java\jdk1.6.0_03」  ※jdk-6u3-windows-i586-pを展開 ・日本語化  <http://www.inter-office.co.jp/contents/90>サイトを参考にし、日本語化プラグインを実施

  • eclipseのアンインストール

     こんにちは☆ eclipseについてお聞きしたいことがあります。 以前 eclipse3.2 tomcat_3.2.0 Java 2 Runtime Environment. SE v1.4.2_16 Java 2 SDK. SE v1.4.2_16 Java Platform. Enterprise Edition 5 SDK 等を用いてeclipseでの開発を行っていました。 ところが、webサーバの調子が悪く(?) localhost:8080の画面は見られるのですがその下の一部のプロジェクトの画面が見られなくなりました。 (たとえばStrutsというプロジェクトのpage1.jspを見る際は http://localhost:8080/Struts/page1.jsp に問い合わせてブラウザに出力していました。) そのため、上記の環境を全てアンインストールしました。 そして j2sdk-1_4_2_16 ならびに上記のものを入れ直したのですが、 やはり同じ現状です。 一部のプロジェクトは画面が映るにもかかわらず、映らないものもあります。 tomcatを起動するときに org.xml.sax.SAXParseException: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)". という警告(エラー)がでるのが気になります。 web-app(C:\Program Files\Apache Tomcat 4.0\webapps)にあるxmlファイルのタグは上記のような文字列じゃないと 駄目という事でしょうか。確かに合致しないタグはあります。 自分自身、良く分かっていないので何を聞けばいいか絞れてませんが、参考になるサイト等アドバイス頂ければありがたいです。 また、 eclipseのアンインストール方法は正しかったでしょうか? SDKを入れた時点で前に作成したプロジェクトがすでに表示されていたのですが・・・

    • ベストアンサー
    • Java
  • eclipse起動時のエラー

    こんにちは。 初めて投稿させて頂きます。 マナー違反等ございましたら失礼致します。 eclipseを使用し、androidアプリの開発を行っております。 本日、eclipseを起動しようとしたところエラーとなり起動できなくなってしまいました。 eclipseからエラーログを確認しろとダイアログが表示されましたので 確認したところ以下のログ内容が記載されておりました。 ●ログ内容 !SESSION 2012-11-27 12:08:42.127 ----------------------------------------------- eclipse.buildId=M20110210-1200 java.version=1.7.0_05 java.vendor=Oracle Corporation BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ja_JP Framework arguments: -product org.eclipse.epp.package.jee.product Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.jee.product -clean !ENTRY org.eclipse.core.resources 2 10035 2012-11-27 12:09:20.965 !MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. !ENTRY org.eclipse.osgi 4 0 2012-11-27 12:10:02.024 !MESSAGE アプリケーション・エラー !STACK 1 java.lang.StackOverflowError at sun.nio.cs.ext.DoubleByte$Decoder.decodeArrayLoop(Unknown Source) at sun.nio.cs.ext.DoubleByte$Decoder.decodeLoop(Unknown Source) at java.nio.charset.CharsetDecoder.decode(Unknown Source) at java.lang.StringCoding$StringDecoder.decode(Unknown Source) at java.lang.StringCoding.decode(Unknown Source) at java.lang.String.<init>(Unknown Source) at java.lang.String.<init>(Unknown Source) at java.io.FileOutputStream.writeBytes(Native Method) at java.io.FileOutputStream.write(Unknown Source) at java.io.BufferedOutputStream.flushBuffer(Unknown Source) at java.io.BufferedOutputStream.write(Unknown Source) at java.io.PrintStream.write(Unknown Source) at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source) at sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source) at sun.nio.cs.StreamEncoder.flushBuffer(Unknown Source) at java.io.OutputStreamWriter.flushBuffer(Unknown Source) at java.io.PrintStream.write(Unknown Source) at java.io.PrintStream.print(Unknown Source) at java.io.PrintStream.println(Unknown Source) at java.beans.Statement$1.exceptionThrown(Unknown Source) at com.sun.beans.decoder.DocumentHandler.handleException(Unknown Source) at com.sun.beans.decoder.DocumentHandler.parse(Unknown Source) at java.beans.XMLDecoder.parsingComplete(Unknown Source) at java.beans.XMLDecoder.readObject(Unknown Source) at zigen.plugin.db.core.XMLManager.load(XMLManager.java:39) at zigen.plugin.db.core.XMLManager.load(XMLManager.java:51) at zigen.plugin.db.core.XMLManager.load(XMLManager.java:57) at zigen.plugin.db.core.XMLManager.load(XMLManager.java:57)     ↑以降、約1000行にわたり記載あり google等でエラー内容を調べてみたのですが、主たるエラーと思われる 「java.lang.StackOverflowError」が原因でeclipseが起動できないという内容が あまり見受けられず、解決するに正直困っております。 是非皆様のお知恵をお借りしたく、宜しくお願い致します。 ●環境 OS:Windows7 eclipse:3.6 Helios JDK:1.7 JRE:1.7 CPU:Core i3 HDD:120GB MEMEORY:2GB

  • Eclipse>ant deployでOutOfMemory(コマンドラインからはOK)

    ----------環境--------- WindowsXP professional sp2 Eclipse version : 3.2.0 Eclipse build ID: M20060629-1905 jdk:1.4.2_08 ----------------------- コマンドラインからant deployを実行すると BUILD SUCCESSFUL になるのですが、 同じものをEclipseからキックすると、 コンパイルの途中でout of memory エラーとなります。 ヒープサイズを設定することで回避できるとのことなので、 ant.bat には以下の記述をしてあるのですが。。。 java.exe -XX:MaxPermSize=128m -Xmx512m -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS% これだけでは情報が少ないかもしれませんが、 コマンドラインではOKで、EclipseからはNGという部分で なにかアドバイスが頂けたらと思います。