java工程打包成可执行jar文件

一个用myeclipse写的java图形用户界面项目,用到了第三方的jar包,打包时不能直接导出jar文件,不过高版本的myeclipse好像有导出runnable jar的,没用过。我用的是fat jar这个插件。下载:。下载后把

net.sf.fjep.fatjar_0.0.31.jar文件放在

myeclipse的安装目录下的plugin下面,重启myeclipse,右键项目就有一个build fat jar文件了。然后照提示一步步来就可以了。


把所有文件都打包到同一个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;
	}
}





 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值