Archive

文章標籤 ‘Java’

如何在Eclipse複製一個已存在的專案

2018年10月24日 尚無評論

如何從不同的Eclipse workspace複製一個已存在的專案呢?  這個問題很簡單,但我常常忘記,導致浪費了不少時間, 所以還是花點時間寫下來 增強一下記憶。

以往很直覺的想法都以為我從workspace下, copy 我要的專案目錄,換成我想要的專案目錄名稱即可,但這招似乎沒用,所以正確的作法步驟應該如下:

  1. 先切換你的專案workspace,先切換到新命名的workspace
  2. 再利用選單上的Import功能
    snap05622
  3. 再選擇 General > Existing Projects into Workspace,按Next
    snap05625
  4. 然後再選擇你要複製的workspace,再選擇你要的Project,要注意Options一定要勾選Copy projects into workspace,不然他只會指向不會把你想要複製的Project Copy到你的workspace。
    snap05626
  5. 這樣就完成了作業。

其實真的很簡單,但往往第一步都錯了,所以還是寫下來加深記憶。

Categories: JAVA, 小技巧, 程式開發 Tags: ,

解決Error java.io.CharConversionException: Not an ISO 8859-1

2012年12月22日 尚無評論

最近的網誌都是在解決錯誤訊息,有點像擦屁股大隊長了

這次要排除的是 java.io.CharConversionException: Not an ISO 8859-1 這個問題

在servlet output stream,時發生的,會出現以下錯誤訊息

description The server encountered an internal error () that prevented it from fulfilling this request. exception java.io.CharConversionException: Not an ISO 8859-1 character: 中 javax.servlet.ServletOutputStream.print(ServletOutputStream.java:89) javax.servlet.ServletOutputStream.println(ServletOutputStream.java:242) mypack.HelloWorldExample1.doGet(HelloWorldExample1.java:43) javax.servlet.http.HttpServlet.service(HttpServlet.java:690) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:196)

上網查了一下才知,原本寫法是直接使用output stream ,就像

ServletOutputStream out = res.getOutputStream();
res.println(line);

怎麼轉碼都不行(但在Tomcat 4時是OK的,Tomcat 6之後就都會出錯),但如果改用OutputStreamWriter ,先定義好寫出的編碼就可以正常了,使用方式如下:ServletOutputStream stream= res.getOutputStream();

OutputStreamWriter out = new OutputStreamWriter(stream,"UTF-8");
out.write(line);

但要注意,這個物件沒有println可用,所以如要斷行符號可要自己加上去喔!

參考資源: http://www.taixinglife.com/blog-138-89.html

Categories: JAVA, 程式開發 Tags:

JAVA如何用POST傳遞XML及接收?

2011年6月17日 尚無評論

最近在和其它系統介接時,對方提出用HTTP協定POST的方式傳遞XML
以往,在傳遞時都是採用parameter的方式傳遞資料,但這次是要直接使用request content body
呵~會JAVA這麼多年了,第一次採用,原本還想說可行嗎?去查了一下真的可以,所以特別寫下來

以下的程式碼都是採用Apache HttpClient 的方式進行

呼叫端

1. 採用Stream的方式,進行傳遞
File input = new File(strXMLFilename);
PostMethod post = new PostMethod(“http://server/api”);
post.setRequestEntity(new InputStreamRequestEntity(new FileInputStream(input), input.length()));
post.setRequestHeader(“Content-type”, “text/xml; charset=UTF-8”);

2.也可以直接用String的方式進行傳遞data 字串

HttpClient httpclient = new HttpClient();
PostMethod post = new PostMethod(“http://server/api”);
RequestEntity entity = new StringRequestEntity(data, “text/xml”, “UTF-8”);
post.setRequestEntity(entity);
httpclient.executeMethod(post);

至於Server接收端要如何接收呢? 此時就不能採用先前在用的request.getParameter了,我們要改用串流方式

StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = null;
try {
  InputStream inputStream = request.getInputStream();
  if (inputStream != null) {
   bufferedReader = new BufferedReader(new InputStreamReader(
inputStream));
   char[] charBuffer = new char[128];
   int bytesRead = -1;
   while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
    stringBuilder.append(charBuffer, 0, bytesRead);
   }
  } else {
   stringBuilder.append(“”);
  }
} catch (IOException ex) {
  throw ex;
} finally {
  if (bufferedReader != null) {
   try {
    bufferedReader.close();
   } catch (IOException ex) {
    throw ex;
   }
  }
}
String body = stringBuilder.toString();

這個body 變數就是我們要的xml文件啦!!

資料來源:

Categories: JAVA, 程式開發 Tags: ,

如何找尋電腦唯一值 for Java

2010年1月11日 尚無評論

最近有需要找到電腦的唯一值來處理 (就是要如何鎖主機啦)

首先,能當一台電腦的唯一值(unique id) 應該就是主機版的ID,CPU ID,及網路卡的MAC
在JAVA API 裡翻了很久,就是找不到有這類型的資訊,頂多只能拿到相關的環境變數

在網路上找了一些方式,果然,現行JAVA標準的API 似乎是沒有提供這資訊
整理好分享給大家

如果就只要找到唯一值,最完整的解決方式,可以參考
http://johannburkard.de/software/uuid/

他提供的元件,就是實作各平台如何取到電腦的唯一值,所以只要用一種方式
就可以在各平台上運行,這也是JAVA的宗旨呀!!

不過,他使用的似乎是網卡的MAC,如果電腦換了網卡似乎就出了問題
所以如果很在意的,就只能用CPU ID 或是主機板 ID 來當唯一值

如果是主機板ID,以下有兩篇文篇是有提到如何查到這ID,不過都要透過其它的程式取得
1.這篇寫的很完整,連JAVA Code都有了,就是呼叫一隻vbs幫忙取得資計
http://www.rgagnon.com/javadetails/java-0580.html

不過要注意,這vbs程式只適用32 bit 的windows平台,所以非所有的windows 都可以使用,所以要使用前請評估細。

2.這篇是提到在.NET時如何取得CPU ID 及主機板 ID,變的更簡單了就像下SQL 指令一樣。不過,如要讓JAVA透過此方式取得這些資訊,就要再多花點時點做API了而且還要先裝.Net Framework才行
http://codeglobe.blogspot.com/2009/02/how-to-retrieve-processoridmotherboard.html

上述只能在windows 平台上運行正常,如果你的程式只在windows上運行就沒什麼差別
但如果你的程式是想跨平台執行的,就可能自己要再多花些工夫啦

而再來要介紹有一GNU License 套件 可以在其它平台取得相關所需的資訊,就是dmidecode,目前他支援的平台如下:

  • Linux i386, x86-64, ia64
  • FreeBSD i386, x86-64
  • NetBSD i386, x86-64
  • OpenBSD i386
  • BeOS i386
  • Cygwin i386
  • Solaris x86

  • 該官網在此
    http://www.nongnu.org/dmidecode/ ,他可以取得的系統資訊約有39 種,列表如下:

  • Type   Information
          —————————————-
             0   BIOS
             1   System
             2   Base Board
             3   Chassis
             4   Processor
             5   Memory Controller
             6   Memory Module
             7   Cache
             8   Port Connector
             9   System Slots
            10   On Board Devices
            11   OEM Strings
            12   System Configuration Options
            13   BIOS Language
            14   Group Associations
            15   System Event Log
            16   Physical Memory Array
            17   Memory Device
            18   32-bit Memory Error
            19   Memory Array Mapped Address
            20   Memory Device Mapped Address
            21   Built-in Pointing Device
            22   Portable Battery
            23   System Reset
            24   Hardware Security
            25   System Power Controls
            26   Voltage Probe
            27   Cooling Device
            28   Temperature Probe
            29   Electrical Current Probe
            30   Out-of-band Remote Access
            31   Boot Integrity Services
            32   System Boot
            33   64-bit Memory Error
            34   Management Device
            35   Management Device Component
            36   Management Device Threshold Data
            37   Memory Channel
            38   IPMI Device
            39   Power Supply

    如果有需要的人,請自行找Google大師查詢一下囉!!
    在此要特別說一下,如果你下 –t 是出現 「  No such file or directory 」就是你Linux 老舊啦,小弟的測試Linux平台就是太舊了,預設這個套件的版本太舊不認得 type 參數,請自行上網下載make就可以啦!!

  • Categories: JAVA Tags: , ,

    Eclipse 3.5 特性說明

    2009年12月9日 尚無評論

    近日才發現自已常用的Eclipse工具似乎已經好久沒更新了,去看了一下版本才發覺目前使用的版本在3.3左右

    而到Eclipse官網查看一下,原來在2009年6月底 已經出到3.5了 (匿稱叫做Galileo , 伽利略) ,而先前版本的發佈歷程如下:

    2006年6月30日:Callisto(卡利斯托,3.2)
    2007年6月29日:Europa(歐羅巴,3.3)
    2008年6月25日:Ganymede(蓋尼米得,3.4)

    當然資訊人的特點就是要使用新版本,不管好不好用,新版的就是對了啦~哈~~哈
    不過在使用前,還是查詢了一下3.4 及3.5到底改了什麼,不然等換了之後 原本的功能不能用再加上效能變差就糟糕了!!

    3.4 Version 新特性(網路最多人介紹的)

    • 已將SVN列入Collaboration的支援,這需要透過內建的Software Updates and Add-ons手動加裝SVN Team Provider
    • Plug-in Spy:在任何界面下按Alt+Shift+F1 ,就可以看到Eclipse用來實現當前選中界面的類別。
    • 麵包屑(breadcrumb):其實就是當前類別到專案(project)的路徑,其中包括包和文件夾。另外,使用者還可以自由地在同一路徑下的某個節點處,縱向切換到其他元素
    • 快速協助(Quick Fix and Quick Assist) :針對有問題的代碼,只要鼠標移動上去,就能提示解決方案信息;只要在任何代碼處,按 ctrl + 1,就有可能出現相關的提示,預測你的下一步動作。
    • 按保存時,自動格式化代碼(分格式化全文和格式化修改的代碼),省略了要再按ctrl + shift + f 。
    • 當前元素的反白高亮功能,根據元素是被引用還是賦值(讀或寫),來 區分 不同的顏色 。
    • annotation 增強了註釋的格式化
    • Junit 支持對線程內每個方法的調用時間輸出
    • 在outline裡,支持對同一個類別中,方法的重排序
    • 查找某個元素的調用層次,支持更多,更細的內容,包括成員變量訪問等,call hierarchy
    • 更多的搜索選項
    • 加強了debug 變量查看功能,不需要再按 ctrl + shift + i 來查看變量的值
    • 新增模擬服務端監聽的debug功能
    • 更清晰轉換jar包到插件項目:為了鼓勵eclipse插件開發用戶,不要使用已經被嵌套在其他項目裡的jar包

    3.5 Version 新特性(網路最多人介紹的)

    • 平台及UI

      • Solaris x86已經加入支持行列
      • Install New Software嚮導中的「Work with:」下拉框現在支持自動補全
      • 增加了一個新的介紹主題,叫做「Slate」
      • 打開的編輯器及多編輯器頁面間的切換更加容易(快捷鍵:Ctrl+PageDown/Ctrl+PageUp,Alt+PageDown/Alt+PageUp)
      • 為了快速關閉,現在可以安全地跳過清楚歷史這一步驟
      • 至於編輯器的常規提示框和對話框,或當前工作台窗口、表單現在可以在Mac Cocoa上使用
      • 應用程序在打印過程中或打開打印對話框時,可以選擇portrait或landscape模式
      • Eclipse富客戶端平台現在包含了一個OSGi聲明式服務(Declarative Services——DS)的實現
      • 你現在可以針對給定選項「釘住」屬性視圖
      • 一個新偏好頁,可以管理用於選擇工作區的啟動提示框
      • About對話框現在提供一種機制,讓plug-in可以給平台about對話框提供安裝頁面
      • Install New Software嚮導現在無需等待連接任何更新服務器就可以立即打開
      • 雙擊垂直折疊線(vertical folding line)可以折起折疊區域
      • 比較編輯器有幾處增強
      • 你現在可以在Debug視圖中快速切換掛起線程
      • 支持Cocoa和Cocoa上的OpenGL
      • 增加對FileTransfer類的支持,使得可以在Explorer和Nautilus文件管理器之間進行copy/paste操作
      • 對項目瀏覽器作出幾項改進
      • 文本編輯器現在支持塊選擇模式(也就是按列選擇或矩形塊選擇)
      • 你現在可以直接在Synchronize視圖中應用一個補丁
      • 在Eclipse中比較Word文檔變化,現在使用該Word比較功能支持把變化顯示為修訂

      Equinox

      • 增強Equinox DebugOptions API,以支持選項設置的動態變化
      • 增加一個新的debug跟蹤API——org.eclipse.osgi.service.debug.DebugTrace,以增強並簡化編寫debug跟蹤信息
      • OSGi R4.2核心規範給核心框架增加了一些小API
      • 新的Equinox並發API

      Plug-in開發環境

      • 有一個新的Target Platform State(目標平台狀態)視圖
      • 你現在可以創建並共享一個由軟件站點的軟件組成的目標定義
      • 新的Category Definition編輯器可以在輸出時用於給特性歸類
      • 你現在可以查看API相對於API基線的變化
      • 通過在菜單introspection mode裡調用plug-in Spy來查看關於菜單的信息
      • 增強OSGi Declarative Services (DS),以支持最新版的DS規範
      • 你現在可以從OSGi啟動配置中初始化產品定義
      • 有一個新的目標平台偏好頁面
      • PPlug-in export現在支持創建source bundles
      • Declarative Services現在支持最新版的OSGi declarative services規範(1.1)更新
      • PDE中的JAR signing支持擴展包含了對keypass的支持
      • 增強目標編輯器,以支持目標定義中的新特性
      • API工具現在可以分析系統類庫的使用情況及代碼訪問運行時不存在的成員時所產生的問題
      • 你現可以在非UI線程中啟動Junit Plug-in測試
      • Eclipse應用程序啟動配置現在支持啟動級別(start level)及自動啟動設置
      • Plug-in Registry視圖現在支持瀏覽OSGi服務
      • 給PDE/Build增加了一個新的擴展,可以使用戶從p2庫中獲取製品
      • API工具現在支持在接口上的兩個約束:@noimplement 和 @noextend。這就使得在不想直接實現一個接口的時候可以擴展它
      • 即使你已經增大了plug-in的主版本號,仍會被提示破壞API的改變
      • PDE增強了bundle及特性(feature)輸出,以把輸出的bundles/feature安裝到當前正在運行的工作台
      • 輸出特性、plug-in及產品時可以選擇binary cycles
      • PDE增加了declarative services工具,以幫助作者提供組件定義

      Java開發工具

      • NLS string hover現在有一個Open in Properties File動作
      • 在Caller模式下,調用層級(Call Hierarchy)現在有一個在上下文菜單中有一個Expand With Constructors動作
      • 當你在編輯器中輸入的時候,Java比較編輯器會更新其結構
      • 有一個新的toString()產生器
      • 為可覆蓋方法增加了一個Open Implementation鏈接,可以直接打開其實現
      • 編輯器與執行環境一致
      • Debug視圖現在提供了breadcrumb(麵包屑),顯示了當前活動的debug上下文
      • 可運行的JAR文件輸出嚮導還可以把所需的類庫打包進一個要輸出的可運行JAR文件,或打包進與緊挨著該JAR的一個目錄中
      • 當在寫一個分配表達式(allocation expression)時發生補全操作,內容助手現在可以提示一個類的可用構造方法
      • 如果檢測到無用代碼,編譯器現在可以發出警告
      • 類庫、變量或容器入口的路徑現在可以是與項目相關的任何位置
      • 在Jovadoc hover的頭部及Javadoc視圖中,現在都提供了引用其他類型和成員的鏈接
      • 隨該Eclipse發行的JUnit4版本更新為4.5
      • Javadoc視圖及hovers現在都支持{@inheritDoc}標籤並給覆蓋方法增加鏈接
      • 同一值的比較現在由編譯器檢測,默認情況下會發出警告

    大致上整理一下網路資訊,看來沒有多大的效能提升,但提供了更多友善度的調整,而從3.3 升上3.5 算是無痛升級啦,暫時還沒有遇到太大的問題!!

    參考資料:

    Categories: JAVA Tags: , ,
    分頁: 1 2 3 4 5 下一頁