月別アーカイブ: 2013年12月

さくらのVNCコンソール

FirefoxでVPSのisoインストールを行おうとしたところ途中で起動するはずのVNCコンソールが起動しなかった。試しに、リモートコンソールの右にあるVNCコンソールリンクをクリックしてみても”Server returned status code 0”と怒られた。

必要となるJREはインストールしているはずだと思いつつ「ツール->アドオン->プラグイン」とみていくと「Java TM Platform ~」が入っていない。

インストール&Firefox再起動で解決。

 

JavaFXが悪さして長い間プラグインなかったのかな??

BackWPup失敗

BackWPupのJobを走らせたら

 

“The HTTP response test get an error “Peer certificate cannot be authenticated with known CA certificates”

と怒られてバックアップがうまくいかなかった。

オレオレ証明書の期限が切れている状態なのでそのせいかな??

メッセージはオレオレだからと言っているけど仕様変わったらもっと騒いでいる人多そうだし。

->12/26追記

残念ながらメッセージ通り自己認証局はだめだった

 

 

JavaFXの非同期処理中に画面を閉じたら。。。。

バックグラウンドでタスクを動かしている状態でJavaFXの画面を閉じる。

閉じる

すると、裏で走っていたTaskが終わった後もなんか生き残っている。

残骸

 

環境は1.7.0_45に入っているjfxrt.jarでEclipse実行。

ソースは下の感じ。

    @FXML
    private void handleExecAction(ActionEvent event) {
        this.logger.info("start");
        try {
            analizeTask = getAnalizeTask();
            pgBar.progressProperty().unbind();
            pgBar.progressProperty().bind(analizeTask.progressProperty());
            pgLabel.textProperty().bind(analizeTask.messageProperty());
            final ExecutorService exe = Executors.newSingleThreadExecutor();
            exe.submit(analizeTask);

    private Task<String> getAnalizeTask() {
        return new Task<String>() {
            @Override
            protected String call() throws Exception {
                logger.info("start");
                try {

 

とりあえずは、

  1. Applicationクラスにコントローラー持たしておいて
  2. stopメソッドからコントローラーの終了メソッドを呼んで
  3. その中からTaskのcancel呼んで
  4. Taskのキャンセルイベントのハンドラー内で強制終了かけてやる

で回避。

Task内の終了処理をきちんとやろうとするといろいろはまりそうですが。

 

1

    private FXMLController controller;

    @Override
    public void start(Stage stage) throws Exception {

        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/Scene.fxml"));
        Parent root = (Parent) fxmlLoader.load();
        controller = (FXMLController) fxmlLoader.getController();

2

    @Override
    public void stop() throws Exception {
        controller.destroy();
    }

3

public class FXMLController implements Initializable {    
    public void destroy() {
        if (analizeTask != null)
            analizeTask.cancel();
    }

4

            analizeTask.addEventHandler(WorkerStateEvent.WORKER_STATE_CANCELLED,
                    new EventHandler<WorkerStateEvent>() {
                        @Override
                        public void handle(WorkerStateEvent t) {
                            exe.shutdown();
                        }
                    });

JavaFXでFXMLを使った際のApplicationからcontrollerへのアクセス

FXMLクラスで”fx:controller”(シーンビルダーだとデフォルトで入っているはず)を指定しておいてアプリケーションクラスでFXMLLoader#getControllerを呼べばコントローラを取得できるのであとはごにょごにょすればOK。

注意点は、FXMLLoader#loadを呼んだ後でないとFXMLLoader#getControllerが取得できない(nullになる)こと。

 

(FXML)

<AnchorPane id="AnchorPane" prefHeight="427.0" prefWidth="423.5" 
xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" 
fx:controller="jp.co.epea.FXMLController">
    <children>
        <VBox fx:id="vBox"

 

(Applicationクラス)

public class MainApp extends Application {

  private FXMLController controller;

    @Override
    public void start(Stage stage) throws Exception {

        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/Scene.fxml"));
        Parent root = (Parent)fxmlLoader.load();
        controller = (FXMLController) fxmlLoader.getController();

 

 

Excel形式の列名に変換

列のインデックスをExcelの列名(AからZでAAに続くやつ)に変換する処理。時々使うのでメモかねて。

colIndexの0がA。

    private static final Character[] COL_STRING = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
            'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };

    public static String toExcelCol(int colIndex) {

        StringBuilder sb = new StringBuilder();
        while (true) {
            int div = colIndex / 26;
            int mod = colIndex % 26;
            sb.insert(0, COL_STRING[mod]);
            if (div == 0)
                break;
            colIndex = div - 1;
        }

        return sb.toString();
    }

colIndexマイナスのチェックなかったりとかとかは適宜修正で。

クライミングジム新しい予定地も。。。

伏見桃山と丹波橋の間に作る予定のボルダリングジムですが、京都市の条例にかかり現状の敷地だと間口が7cm不足するという事態になりました。

敷地の交渉始める段階ですがうまくいかなかったら、まずはもう少し南の向島あたりか宇治あたりに1号店を建てるようになるかもしれません。

ざっくりした図面なのでそっちが間違えているかもしれませんが。。

 

 

JStyleがエラー

昨日エクリプス(4.3)をアップデートしてからJStyleがエラー。エラー内容は以下。

java.lang.NoClassDefFoundError: org/eclipse/swt/graphics/GC$JStyleSWTBridge
    at jp.sourceforge.mergedoc.jstyle.JStylePlugin.applySWT(JStylePlugin.java:89)
    at jp.sourceforge.mergedoc.jstyle.JStylePlugin.earlyStartup(JStylePlugin.java:81)
    at org.eclipse.ui.internal.EarlyStartupRunnable.runEarlyStartup(EarlyStartupRunnable.java:87)
    at org.eclipse.ui.internal.EarlyStartupRunnable.run(EarlyStartupRunnable.java:66)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.ui.internal.Workbench$55.run(Workbench.java:2551)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.graphics.GC$JStyleSWTBridge cannot be found by jp.sourceforge.mergedoc.jstyle_4.3.0.0
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 7 more

java.lang.NoClassDefFoundError: org/eclipse/swt/graphics/GC$JStyleSWTBridge
    at jp.sourceforge.mergedoc.jstyle.JStylePlugin.applySWT(JStylePlugin.java:89)
    at jp.sourceforge.mergedoc.jstyle.JStylePlugin.earlyStartup(JStylePlugin.java:81)
    at org.eclipse.ui.internal.EarlyStartupRunnable.runEarlyStartup(EarlyStartupRunnable.java:87)
    at org.eclipse.ui.internal.EarlyStartupRunnable.run(EarlyStartupRunnable.java:66)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.ui.internal.Workbench$55.run(Workbench.java:2551)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.graphics.GC$JStyleSWTBridge cannot be found by jp.sourceforge.mergedoc.jstyle_4.3.0.0
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 7 more

 

JStyleSWTBridgeというクラスがないと言っている。

Eclipseアップデートした際にあまり注意していなかったけど4.3.0から4.3.1に上がっていて、(Pleiadesにもともと入っていた)JStyle用にカスタマイズされたjarが上書きされてエラーをはいている状況っぽい。

JStyleのページから4.3.1用のものを落としてきて、プラグインフォルダに上書き&4.3.0のJStyle(※)を削除

-clean付きで起動したらOK

自分の環境はWindows7 64bitだけどどのOSでも似たような事象だと思う。

 

propedit(プロパティエディタ)とSysdeo Tomcatが警告残っているので、4.3.1に上げた影響で他にもところどころ直す必要が出てくるかも。

 

※以下のJar

jp.sourceforge.mergedoc.jstyle_4.3.0.0.jar
org.eclipse.swt.win32.win32.x86_64.source_3.102.0.v20130605-1544.jar
org.eclipse.swt.win32.win32.x86_64.source_3.102.0.v20130605-1544.jar.backup
org.eclipse.swt.win32.win32.x86_64_3.102.0.v20130605-1544.jar.backup

 

 

eclipseのglassfish用プラグイン

Eclipseのアップデートを行ったところ「http://dlc.sun.com.edgesuite.net/glassfish/eclipse/kepler/ のリポジトリーが見つかりません。」と怒られた。

 

アドレス少し削って

http://dlc.sun.com.edgesuite.net/glassfish/eclipse/

とすると

Attention – GlassFish plugins will be distributed exclusively as part of the OEPE package.

To get information about OEPE, please visit OEPE page on OTN.

と出てきました。

少し前にtwitterで言ってたかも。。

 

というわけでプラグインから削除

IE11がWIndows Updateで更新失敗(コード9C47):対処方法

(2016/01/23追記)
京都府宇治市にあるクライミング(ボルダリング)ジム・ロシェ店長のブログです。
ボルダリングと関係ないこの記事が一番人気なので、これから調べて対処方法まとめていこうと思います。

まとめたものはこちら

 

 

Link:How to fix IE11 Windows update error

 

家のノートPCをInternet Explorer 11にアップデートしようとしたところ、コード9C47というエラーがでてアップデートに失敗。おぅ、インストールできない。

ie11err

ぐぐったら、”C:\Windows\IE11_main.log”にKB2729094が足りないエラーが出ている場合はそいつをインストールすれば治ったという情報があった。

ログ

00:56.363: INFO:    Version Check for (KB2882822) of C:\Windows\System32\tdh.dll: 6.1.7601.18247 >= 6.1.7601.18247 (True)
01:36.502: ERROR:   WMI query for Hotfixes timed out. Query string: 'Select HotFixID from Win32_QuickFixEngineering WHERE HotFixID="KB2729094"'  Error: 0x00040004 (262148).
01:36.627: INFO:    KB2729094 could not be download is not installed.

KB2729094(64bitはWindows6.1-KB2729094-v2-x64.msu、32bitはWindows6.1-KB2729094-v2-x86.msu)をぐぐったらでてきたMSの公式からダウンロードしてインストールを試みた。(うまくインストールできてその後にMicrosoft Updateかけたらうまく入れられたという情報や、インストール済みというメッセージが出てうまくいかなそうに見えたけどアップデートかけたらうまくいったという報告がほとんどだったので大体の場合はこれで治ると思う。。。)

自分の場合は残念ながら「すでにKB2729094適用済み」の旨のメッセージが出てうまくいかなかった。

公式から単独ダウンロードしたらインストールはできたので、とりあえずはこれで。

KB2729094って以前も何度もアップデート失敗の原因になっていたので何とかしないとまたはまるかな。

 

->English (対応方法ざっくり)