java工程打包成可執行jar檔案

來源:互聯網
上載者:User

一個用myeclipse寫的java圖形化使用者介面項目,用到了第三方的jar包,打包時不能直接匯出jar檔案,不過高版本的myeclipse好像有匯出runnable jar的,沒用過。我用的是fat jar這個外掛程式。下載:。下載後把

net.sf.fjep.fatjar_0.0.31.jar檔案放在myeclipse的安裝目錄下的plugin下面,重啟myeclipse,右鍵項目就有一個build fat jar檔案了。然後照提示一步步來就可以了。http://blog.csdn.net/lntswangxin/article/details/5993329把所有檔案都打包到同一個jar檔案,包括圖片,設定檔,第三方jar包等。這樣用fat jar就不大管用了。用myeclipse內建的export runnable匯出可執行jar檔案。問題在於無法訪問到jar包內部的資源檔,片,xml檔案等,這樣匯出來的可執行檔可以雙擊執行,也可以在CMD中執行,但是無法讀取圖片和設定檔。至於如何在CMD中執行jar檔案:在CMD中輸入java -jar ***.jar 即可,這樣可以在CMD看見System.out.pirntln()出來的資訊,也可以看到程式執行的錯誤資訊。如果這個命令報錯,則看看所用的jre版本是否足夠高,一般1.6及以上會有這個命令,但是電腦自己的jre版本太低,那就轉換到相應高版本的jre路徑下面去執行這個命令。為了看到程式的圖片,需要用ClassName.class.getResource()擷取資源的相對路徑,然後把圖片等放到src或者bin檔案夾中,這樣打包的時候就會把圖片一起打包到jar檔案中。用的時候注意圖片尾碼名要大寫。xml檔案小寫可以訪問到,但是圖片尾碼小寫導致程式老是讀不到圖片檔案,報null錯誤。改完圖片路徑後,重新編譯工程,打包出來,然後雙擊或者用CMD命令都可以執行了。  --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- java圖片上傳到資料java儲存影像檔到資料庫,把一個jpg圖片儲存到資料庫中,傳進來一個File類型的參數。首先就是要讀這個檔案的內容。java裡面有輸入資料流和輸出資料流用來進行各種檔案操作。輸入資料流可以看做用來把外部傳進來的檔案參數讀到程式裡面來,把一段原本封裝成File對象的資料作為位元組讀到程式中來。而輸出資料流可以看做把程式中的這段位元組資料輸出到我們指定的目的地,入目的檔案夾,資料庫等。        現在,我們有一個檔案參數,我們需要把檔案參數轉換為位元組流。第一步,把檔案轉換為檔案輸入資料流,FileInputStream(File)由於檔案是圖片,因此使用ImageIO這個類把檔案輸入資料流轉換成位元組輸出資料流,位元組輸出資料流ByteArrayOutputStream,位元組輸出資料流可以直接轉換為位元組數組。這樣就得到了一個圖片檔案對應的的位元組數組。接著,就要把這個位元組數組對應的資料寫到資料庫中。同樣需要輸入資料流和輸出資料流的協助。上面說了,輸入資料流是把資料參數傳遞給程式,當然程式也需要相應的資料結構來儲存傳遞進來的參數。既然得到了一段位元組流,那麼就使用位元組數組輸入資料流把傳進來的位元組流參數儲存到程式的位元組流數組中來。這時輸出資料流就可以把程式中的位元組數組裡的資料寫出去了。這裡有一點需要注意,輸入資料流讀位元組數組時傳遞進來的位元組數組可能很大,而程式的位元組數組無法一下子儲存所有這些資料,那麼就使用迴圈來確保傳進來的位元組數組能夠完全被寫出去,否則很容易出現一個圖片檔案通過程式拷貝後發現只有上半部分能夠正常顯示,下半部分沒有圖片的情況。—————————————————————————————————————————————————————————————————————————————java記錄日誌--使用log4j的步驟1.將commons-logging.jar和logging-log4j-1.2.9.jar匯入到構建路徑中。2.將log4j.properties放到src根目錄下。3.聲明一個變數Logger logger=Logger.getLog("classname")。4.使用用法如下:logger.debug("debug message")或者logger.info("info message")。5.到記錄檔下查看是否寫入資訊。—————————————————————————————————————————————————————————————————————————————java  校正圖片檔案像素,判斷是否是圖片,下載BLOB圖片到本地檔案--------工具類
package com.dw.function.jining.photo;import java.awt.image.BufferedImage;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.sql.SQLException;import javax.imageio.ImageIO;import oracle.sql.BLOB;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGImageEncoder;public class PhotoUtil{public static boolean isImage(String imageFilePathName) {        if (imageFilePathName == null || imageFilePathName.isEmpty()) {            return false;        }        String formatTypeName = imageFilePathName.substring(imageFilePathName                .lastIndexOf(".") + 1, imageFilePathName.length());        String imageArray[] = { "bmp", "dib", "gif", "jfif", "jpe", "jpeg",                "jpg", "png", "tif", "tiff", "ico" };        for (String imageFormat : imageArray) {            if (imageFormat.equals(formatTypeName.toLowerCase())) {                return true;            }        }        return false;    }public static int[] getImageSize(File imageFile) throws Exception {int result[] = { 0, 0 }; BufferedImage bi = null;        if (imageFile == null || !imageFile.isFile()) {         return result;        }        String fileName = imageFile.getName();        if (!isImage(fileName)) {         return result;        }        bi = ImageIO.read(imageFile);        int width = bi.getWidth();        int height = bi.getHeight();        result = new int[] { height, width };        return result;    }/** * @Description:校正照片像素 * @Author: wgf * @Date: 21/11/2012 * @param photobytes * @return * @throws Exception */public static final boolean checkPhotoPixel(File photo) throws Exception {int heigth=441;int width=358;// 檢查照片像素if (photo != null) {int[] photoSize = getImageSize(photo);photo.delete();if (photoSize != null) {if (photoSize[0] < heigth|| photoSize[0] > heigth|| photoSize[1] < width|| photoSize[1] > width) {return false;}}}else{return false;}return true;}public static File saveBlobToFile(BLOB blob){File photo=new File("temp.jpg");try {InputStream inStream=blob.getBinaryStream();BufferedImage bimage=null;BufferedInputStream ins=new BufferedInputStream(inStream);bimage=ImageIO.read(ins);FileOutputStream sos=new FileOutputStream(photo);BufferedOutputStream bos=new BufferedOutputStream(sos);JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(bos);encoder.encode(bimage);} catch (SQLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return photo;}}


 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.