2014年11月24日 星期一

無法啟動程式,因為您的電腦遺失 QtWidgetsd.dll...

        今天嘗試寫一個簡單的 Qt 應用程式編譯完後,透過 Qt Creator 執行程式並沒有發生任何問題,但是直接執行 exe 檔卻發生 "無法啟動程式,因為您的電腦遺失 QtWidgetsd.dll..." 如下圖所示:

        這個問題就如你開發 MFC 程式發布應用程式時是用 Dynamical Link 而非 Static Link,但是 Qt 要編譯成 static link 需要的步驟比較複雜且有 licensing 的問題 (請參考: Making the right licensing decision )。

        所以在開發階段解決這個問題最快的方式是將  DLL 所在的目錄加入到系統路徑中,以我的例子就是將 "C:\Qt\5.3\msvc2013\bin" 加入到 PATH 中即可。

        另外如果你想要查詢該程式所相依的 DLL 檔案有哪些,可以使用 Dependency Walker 工具來查看,如下所示:


        除了將 Qt DLL 檔案所在的目錄加入到 PATH 外,你可以自己手動拷貝所需的 DLL 檔案與執行檔相同的目錄下,透過 Dependency Walker 工具我只查到與 Qt 相關的 DLL 檔案有 Qt5Widgetsd.dll、libGLESv2d.dll、Qt5Cored.dll、Qt5Guid.dll、icuin52.dll、icuuc52.dll、icudt52.dll;但是當執行時卻出現下列錯誤訊息應用程式就被強迫關閉。


      經過實驗最後發現必須額外放入 libEGLd.dll 檔案才可以正常執行應用程式。

[參考鏈結]

2014年11月17日 星期一

"no JDK found – please set JAVA_HOME" while starting tomcat7


Solution 1 to make sure default-java exists underneath /usr/lib/jvm/ folder,if no, you can do something as follow:

ln -s /usr/lib/jvm/java-7-oracle /usr/lib/jvm/default-java

Solution 2 Add JAVA_HOME variable into /etc/default/tomcat7 file to specific JDK for tomcat7

sudo gedit /etc/default/tomcat7

Added JAVA_HOME variable

JAVA_HOME=/usr/lib/jvm/java-7-oracle

Reference:

2014年11月4日 星期二

Installing the APR based Apache Tomcat Native library on Ubuntu 12.04

05-Nov-2014 13:38:52.881 INFO [main] org.apache.catalina.core.AprLifecycleListener.init The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
05-Nov-2014 13:38:52.962 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:colorado-webapp' did not find a matching property.


sudo apt-get install libtcnative-1


Due to Tomcat 7.0.55 requires libtcnative-1 1.1.30, you will see follow error message after restart the Tomcat server.

05-Nov-2014 14:02:03.109 SEVERE [main] org.apache.catalina.core.AprLifecycleListener.init An incompatible version 1.1.22 of the APR based Apache Tomcat Native library is installed, while Tomcat requires version 1.1.30


You can upgrade it with:

$ sudo add-apt-repository ppa:pharmgkb/trusty
$ sudo apt-get update
$ sudo apt-get upgrade libtcnative-1

References:
Tomcat APR native library not loaded *even* when present and configured
Tomcat native library update
Installing the APR-based Tomcat Native Library for Jira on Debian 7 (Updated)
Apache Tomcat Native Library Doc

Other Topics:
Specify JDK for tomcat7

Download
Apache Tomcat Native library

2014年11月3日 星期一

How to know which servlet and jsp version

Server info: <%= application.getServerInfo() %>
  
Servlet version: <%= application.getMajorVersion() %>.<%= application.getMinorVersion() %>
  
JSP version: <%= JspFactory.getDefaultFactory().getEngineInfo().getSpecificationVersion() %>
  
Java version: <%= System.getProperty("java.version") %>
  
Source from: how to know which servlet and jsp version

2014年10月4日 星期六

建立使用者自訂的 Android 裝置

        當透過 Android Virtual Device (AVD) Manager 建立 AVD 時,Device 只能選擇已內建好的裝置,如下圖所示:

        當這些內建裝置的解析度與硬體設定剛好符合你的需求時並沒有任何問題,但如果想要不一樣的設定;如解析度、記憶體大小、Keyboard...等等。這時你就必須自己制訂符合需求的 Android Device,建立的步驟如下:

  1. 開啟  Android Virtual Device (AVD) Manager 切換到 Device Definitions,選擇一個與你需求最接近的 Device後,按 Clone 按鈕,如下圖所示:(PS: 使用 ADT 23.0.4.1468518 按 Create Device... 按鈕並無法成功建立使用者自訂裝置)。

  2. 在 Clone Device 畫面,填入你所需的設定值,如下圖所示:

  3. 建立完成後,你會在 Device 清單畫面中看到你剛剛所定義的裝置,往後你就可以建立你剛剛所自訂的 Android 虛擬裝置。

        當你建立完自訂的 Android 裝置後,你可以在 ~/.android/devices.xml 檔案中找到你剛剛所建立的資訊。

自動產生Ant build script 檔案

假設你的專案存放在 C:\AndroidProject\Hello,在 console window 下,執行下列指令即可:

android update project –p .

另外如果你的專案含有 appcompat_v7 ,也必須到該目錄下執行上面的指令。

執行完指令後會在專案的資料夾內產生 build.xml 與 local.properties 兩個檔案。local.properties 的內容是設定 android SDK Home 的目錄,你可以自行修改指定到其他路徑下,如果你沒有特殊的需求,基本上都不需要去修改這些檔案。

之後你就可在C:\AndroidProject\Hello 目錄下,透過 ant 來編譯你的Android 專案了。範例如下:

ant clean release
ant clean debug