Java8とJava7の環境を共存させる
開発の関係でJava7を残しておく必要があったので,作業メモ
参考にしたのは,こちらのサイト
「WindowsでJDK 7とJDK 8を切り替える際の注意点 」
システム環境変数の修正
- JAVA_HOMEの追加
Java 7を使いたかったので,「C:\Program Files\Java\jdk1.7.0_79」
- PATHに%JAVA_HOME\binを追加
%JAVA_HOME\binは問答無用に先頭へいれました.javapathフォルダーよりも先に書かれていればOKだと思います
java.exeなどを削除
system32もしくはSysWOW64フォルダにあるjava.exe, javaw.exe, javaws.exeを削除します.
エクスプローラでwindowsフォルダから「java.exe」を検索すると上の3つのファイルが出てくるのでそのまま削除する
レジストリの修正
regeditで,
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersionの値を「1.8」から「1.7」に変更
レジストリの修正をしないと次のようなエラーが出てしまったので,レジストリを変更しました
>java --version Unrecognized option: --version Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.
MacとWindowsの両方でMakefileをビルドする設定方法
前回はMinGWだけの場合の設定方法だったのですが,設定ファイルをMac/Winで共有したので少しファイル(Make.sublime-build)を変更しました。
{ "cmd": ["make"], "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "working_dir": "${project_path:${folder:${file_path}}}", "selector": "source.makefile", "shell": false, "encoding": "cp932", "windows": { "path": "C:\\MinGW\\bin;C:\\MinGW\\msys\\1.0\\bin\\" }, "osx": { "path": "/opt/local/bin:/opt/local/sbin:/usr/local/gnu/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin" }, "variants": [ { "name": "Run", "cmd": ["make", "clean"] } ] }
あと,variantsのnameを”Run"にしておくとShift+⌘+Bでコマンドをデフォルトで実行してくれるようです。それ以外のnameを設定した場合は⌘+Pから呼び出します。
MacとWindowsで使い始めるための導入まとめ
MacとWindowsでSublime Textを使い始めて,設定周りとか一緒にさせておきたいので,まとめました。
以下の情報は古いので,本家のページhttps://packagecontrol.io/docs/syncing:Syncingを参照して下さい。
使う(った)もの
検索するとDropBoxでやられている方が多かったので,Copyで始めてみました。CopyならDropBoxと違って15GB(紹介なら+5GB)からスタートできるのがいいかなと思ってます。
Copyのアカウントを持ってない方はこちらからどうぞ。
Sublime TextとCopyのインストール
普通にそれぞれのマシンにSublime TextとCopyをインストールします。
Copyはアカウントを作成します。デフォルトでは~/(ユーザ名)/Copyにフォルダが作成されます。
Sublime Textを起動する
Windowsの場合はC:\Users\(ユーザ名)\AppData\RoamingにSublime Text 2というフォルダが作成されます。
Macの場合は/Users/(ユーザ名)/library/Application SupportにSublime Text 2というフォルダになります。
確認できたら,Sublime Textを終了します。
Copyフォルダにファイルを移動
Copyフォルダに「Sublime Text 2」フォルダを作成し,その下にWindows / Macどちらから始めてもよい(と思いますが),Windowsにある上記のSublime Text 2フォルダのうち以下のフォルダをCopyに作成したSublime Text 2フォルダの下に移動します。
- Installed Packages
- Packages
- Pristine Packages
シンボリックリンクを作成する
今度はCopy\Sublime Text 2以下にあるフォルダをアプリケーションデータへシンボリックリンクを張ります。
Windowsだとこんな感じ(コマンドプロンプトを管理者権限で起動させる)
> mklink /D "C:\Users\(ユーザ名)\AppData\Roaming\Sublime Text 2\Installed Packages" "C:\Users\(ユーザ名)\Copy\Sublime Text 2\Installed Packages" > mklink /D "C:\Users\(ユーザ名)\AppData\Roaming\Sublime Text 2\Packages" "C:\Users\(ユーザ名)\Copy\Sublime Text 2\Packages" > mklink /D "C:\Users\(ユーザ名)\AppData\Roaming\Sublime Text 2\Pristine Packages" "C:\Users\(ユーザ名)\Copy\Sublime Text 2\Pristine Packages"
Macだとこんな感じ
$ cd "~/Library/Application\ Support/Sublime\ Text\ 2/" $ "ln -s ~/Copy/Sublime\ Text\ 2/Installed\ Packages ./Installed\ Packages" $ "ln -s ~/Copy/Sublime\ Text\ 2/Packages ./Packages" $ "ln -s ~/Copy/Sublime\ Text\ 2/Pristine\ Packages ./Pristine\ Packages"
パッケージをインストール
Sublime TextのパッケージをMac/Win共通で使えるのがありがたいです。
私はこの順番でインストールを行いました。
- Package Control : 何はなくてもこれを入れないと。
- ConvertToUTF8 : UTF-8以外のファイルを扱うのがほとんどなので重宝しています。
- IMESupport : Windows版でIMEインライン入力をするのに使います。
あとはお好みで。
環境変数はPreferences.sublime-settingsへ
環境変数をPreferences.sublime-settingsで変更しておくと,すべての*.sublime-builsのpathに入れる必要はなさそう。
Preference > Settings - User で Preferences.sublime-settings - Userが開かれるので,以下を追加しました。
"build_env": { "PATH": "/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin" }
この場合はMacのPortsを入れている環境なので,/opt/localにports関連のバイナリがあるためです。
コンソールから set | grep PATHとかで,実際の環境変数を入れてください。
WindowsのMinGW環境でmakeする場合の設定
Make.sublime-buildを以下のようにしました。
{ "cmd": ["make"], "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "working_dir": "${project_path:${folder:${file_path}}}", "selector": "source.makefile", "shell": false, "path": "C:\\MinGW\\bin;C:\\MinGW\\msys\\1.0\\bin\\", "encoding": "cp932", "variants": [ { "name": "Clean", "cmd": ["make", "clean"] } ] }
あとはMakeを行うディレクトリをプロジェクトとしてフォルダに入れるとそこにMakefileがあるとして実行します。
これでMinGWとCygwinを行ったり来たりすることが無くなってスッキリ。
[追記:2013/11/27]
Mac/Winで設定ファイルを共有した場合のエントリを書きました。
PDF出力するならAH PDF5プラグインを使うことから始めないとダメだと思う
以前にpdf5プラグインの導入にミスって半分グチなエントリーを書いたのですが,
久々にトライしたところPDFの出力が見違えるようになったので再エントリー。
使ったもの
- DITA-OT(DITA-OT1.8.M2_full_easy_install_bin.zip)
- AH pdf5 plugin
- http://www.antenna.co.jp/AHF/ahf_samples/ からでも良い。今回はGithubに上がっている最新のものを使ってみた。
- AH Formatter
Apatch FOPでもできると思うけどまだ試していません。
インストール方法
AH pdf5 pluginの中にpdf5_manual.pdfというユーザガイドが書いてあるのでそれを参照に。
簡単な手順だけを記載します。
- DITA-OTを展開
DITA-OTはフルパッケージを使うとSAXONなどのライブラリも全て入っているのでコレがお手軽。
展開する場所はどこでも良いけど,ディレクトリが深くないほうが良いと思う。
- DITA-OTの動作確認
一応DITA-OTでPDFが出力されるか確認する。
[DITA-DIR]\doc\userguide.pdfにユーザガイドがある。
ant -f build_demo.xml
でtransformation typeのところでpdfにするとPDF出力できる。
- AH pdf5 pluginを展開
展開した後で必要なファイルをDITA-OTのフォルダへコピーするのでテンポラリな場所で展開すればよい。
- com.antennahouse.pdf5フォルダを[DITA-OT]\pluginsフォルダへコピーする
- index-dataフォルダを[DITA-OT]\samplesフォルダへコピーする
- run_en.bat,run_ja.bat,ahf_setting.xmlファイルを[DITA-OT}フォルダへコピーする
- AH Formatterを使用する場合は,startcmd.batファイルに以下を追加する
REM AH Formatter home and setting file set AHF_DIR=C:\Program Files (x86)\Antenna House\AHFormatterV6 set AHF_OPT=%DITA_DIR%ahf_setting.xml start "DITA-OT" cmd.exe
最後に以下のコマンドを
ant -f integrator.xml Chapter
PDF5プラグインのテスト
startcmd.batを起動させてから,run_en.batかrun_ja.batを実行するとDITA-OTのdefaultとは違う世界が出力されました。
ruby1.9.1でTTSP(1.1.1)を実行しようとすると,invalid multibyte char (US-ASCII)になる場合の対処法
CygwinをアップデートしたらTTSP(1.1.1)が動かなくなった*1…
---------------------------------------------------------------------- Execute TTG in auto_code_1 ---------------------------------------------------------------------- /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': /home/mtakada/hrp2/2.0.0/ttsp/tools/ttg/common/bin/CommonModule.rb:2049: invalid multibyte char (US-ASCII) (SyntaxError) /home/mtakada/hrp2/2.0.0/ttsp/tools/ttg/common/bin/CommonModule.rb:2049: invalid multibyte char (US-ASCII) /home/mtakada/hrp2/2.0.0/ttsp/tools/ttg/common/bin/CommonModule.rb:2049: syntax error, unexpected $end, expecting keyword_end TTJ_ATTR_EMPTY = "▒ʤ▒" ^ from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /home/mtakada/hrp2/2.0.0/ttsp/tools/ttg/common/bin/Config.rb:42:in `<top (required)>' from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /home/mtakada/hrp2/2.0.0/ttsp/tools/ttg/bin/ttg.rb:46:in `<main>' TTG failed in auto_code_1
ぐぐると,どうやらruby1.9.1では日本語の対処が変わったようです。
invalid multibyte char (US-ASCII)とか出てきた
Ruby 1.9上のRailsでinvalid multibyte char (US-ASCII)の対処
なので,こちらも該当箇所のファイルの先頭に追加します。
#!ruby # -*- coding: euc-jp -*- # # TTG
今のところ次のファイル修正しました。
ttsp/tools/ttg/bin/builder/HTMLBuilder.rb
ttsp/tools/ttg/common/bin/CommonModule.rb
ttsp/tools/ttg/ttj/bin/class/TTJModule.rb
ttsp/tools/ttg/ttj/bin/test_scenario/Condition.rb
ttg/ttj/bin/dictionary.rb
そろそろファイルの文字コードはeucじゃなくてUTF-8に移行したほうがいいんじゃないですかね。
追記:TTSP1.1.2では以下のように対応しているようです。
#!ruby -Ke # # TTG ...
って調べると,引っかかっていたKCODEの対応になっているようです。
なので,上記修正したファイルをTTSP1.1.2で修正したようにさらに変更しました。
#!ruby -Ke # -*- coding: euc-jp -*- # # TTG
修正したファイル
ttsp/tools/ttg/ttj/bin/class/TTJModule.rb
ttsp/tools/ttg/ttj/bin/ttj.rb
最後にYAMLファイルのロード箇所を修正します。
ttsp/ttg/ttc/bin/class/TTCCommon.rbにkconvを追加します。
require "kconv" require "yaml" require "common/bin/CommonModule.rb" require "ttc/bin/class/TTCError.rb" require "ttc/bin/class/ObjectCommon.rb" require "ttc/bin/kwalify.rb" require "common/bin/Config.rb" #===================================================================== # TTCModule #===================================================================== module TTCModule include CommonModule #=================================================================== # 概 要: YAMLファイルをロードする #=================================================================== def load_yaml_file(sFileName) check_class(String, sFileName) # ファイル名 cConf = Config.new() begin if (cConf.use_yaml_library?()) yaml = YAML.load(File.read(sFileName).toutf8) else yaml = Kwalify::Yaml.load_file(sFileName) end rescue SystemCallError raise(TTCError.new(sprintf(ERR_CANNOT_OPEN_FILE, sFileName) + "#{TTG_NL}(#{$!.message()})")) rescue ArgumentError raise(TTCError.new(sprintf(ERR_YAML_SYNTAX_INVALID, sFileName) + "#{TTG_NL}(#{$!.message()})")) rescue Kwalify::SyntaxError raise(TTCError.new(sprintf(ERR_YAML_SYNTAX_INVALID, sFileName) + "#{TTG_NL}(#{$!.message()})")) end
*1:1.1.2では対応しているはず