这是程序启动后的登录界面
现在的情况是:导出为可执行jar后,一直停在登录窗口,进不去主界面,如下图,点了没反应
源代码发给我,我看一下
打成压缩包发我邮箱 1090053325@qq.com
如图,那些DLL文件是原有代码就有的,我试过改变位置打包存放也不行,不要在意
这个程序有两部分功能但是公用的某些资源,这是人脸识别登录的,之前发的是管理sqlite数据库中的少量用户
在myeclipse中功能都很正常,但是导出以后就不行了,真心不知道怎么回事,新人求各路大神帮忙,衷心感谢
没人么?大佬们帮小弟看看呀
导出后这个登录功能也异常,进不去了
这种项目是你公司的吧,你去问你同事就好了。问题你说不清没源码别人也不清楚情况
这是人脸识别的窗口代码
package com.pag.sysLogin;
import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import org.bytedeco.javacv.CanvasFrame;
import org.bytedeco.javacv.OpenCVFrameGrabber;
import com.pag.compare.Face;
import com.pag.services.UserServices;
import com.pag.winControl.WinEventInterceptor;
public class SysLogin extends JFrame {
/**
*
*/
private static final long serialVersionUID = -4300624464929057747L;
static SysLogin lt = new SysLogin();
static JFrame pas = new JFrame();
static JPanel jp,jp1;
static JLabel jlb, jlb1;
static JButton jb, jb1, jb2;
static JTextField jtx;
static JPasswordField jpf;
// 获取显示器属性
static Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
// 临时照片路径
static String path = "D:/temporary/tempor.jpg";
// 摄像机属性
static OpenCVFrameGrabber grabber;
static CanvasFrame canvas;
// 初始化界面
public void init() {
jp = new JPanel();
jlb = new JLabel("欢迎使用");
jlb.setFont(new Font("宋体", Font.BOLD, 32));
jlb1 = new JLabel("请选择进入方式···");
jlb1.setFont(new Font("宋体", Font.BOLD, 32));
jb = new JButton("人脸识别");
jb1 = new JButton("账号密码进入");
jb.setFont(new Font("宋体", Font.BOLD, 28));
jb1.setFont(new Font("宋体", Font.BOLD, 28));
jb.addActionListener(new click());
jb1.addActionListener(new click1());
jp.setLayout(new GridLayout(4, 1));
jp.add(jlb);
jp.add(jlb1);
jp.add(jb);
jp.add(jb1);
jp.setBounds(d.width / 2 - 200, d.height / 2 - 100, 400, 200);
this.setLayout(null);
this.add(jp);
this.setUndecorated(true);
this.setSize(d.width, d.height);
this.setResizable(false);// 不可改变大小
this.setAlwaysOnTop(true);// 总在最前
this.setVisible(true);// 显示窗体
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
// 按钮事件--人脸识别
class click implements ActionListener {
public void actionPerformed(ActionEvent e) {
canvas.setVisible(true);
lt.setVisible(false);
long time = 0;
while (time < 155) {
time++;
if (time == 149) {
screenShot();
System.out.println("截图并存为临时文件成功");
canvas.setTitle("正在识别,请稍后···");
}
}
try {
getFiles("D:/temporary");
identify();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
// 按钮事件--口令进入
class click1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
pas.setVisible(true);
lt.dispose();
canvas.dispose();
}
}
// 账号登录界面
public static void login() {
jp = new JPanel();
jp1 = new JPanel();
jb2 = new JButton("进入");
jtx = new JTextField();
jpf = new JPasswordField();
jlb = new JLabel("账户:");
jlb.setFont(new Font("宋体", Font.BOLD, 24));
jlb1 = new JLabel("密码:");
jlb1.setFont(new Font("宋体", Font.BOLD, 24));
jb2.setFont(new Font("宋体", Font.BOLD, 28));
jb2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
System.out.println("输入的账户"+jtx.getText());
System.out.println("输入的密码"+jpf.getText());
System.out.println("获取的密码"+UserServices.getPwdByUsername(jtx.getText()));
if (!UserServices.check(jtx.getText())) {
jtx.setText("无此用户");
System.out.println("无此用户");
} else {
if (jpf.getText().equals(UserServices.getPwdByUsername(jtx.getText()))) {
System.out.println("验证通过");
Thread.sleep(2000);
System.exit(0);
} else {
jtx.setText("密码错误");
System.out.println("重新输入");
pas.repaint();
}
}
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
jp.setLayout(new GridLayout(5,1,50,10));
jp.add(jlb);
jp.add(jtx);
jp.add(jlb1);
jp.add(jpf);
jp1.setLayout(new FlowLayout(FlowLayout.CENTER));
jp1.add(jb2);
jp.add(jp1);
jp.setBounds(d.width / 2 - 300, d.height / 2 - 150, 600, 300);
pas.add(jp);
pas.setUndecorated(true);
pas.setBounds(0, 0, d.width, d.height);
pas.setLayout(null);
pas.setResizable(false);// 不可改变大小
pas.setAlwaysOnTop(true);// 总在最前
pas.setVisible(false);// 显示窗体
}
// 调用摄像头-----------------------------------------------------------------------------------------------------
public static void cameraInit() throws Exception {
grabber = new OpenCVFrameGrabber(0);
grabber.start(); // 开始获取摄像头数据
canvas = new CanvasFrame("请注视摄像头进行人脸识别···");// 新建一个窗口
canvas.setBounds(0, 0, d.width, d.height);
canvas.setResizable(false);// 不可改变大小
canvas.setDefaultCloseOperation(EXIT_ON_CLOSE);
canvas.setVisible(false);
while (true)
canvas.showImage(grabber.grab());
}
// 截图
public static void screenShot() {
BufferedImage buffImg = null;
try {
buffImg = (new Robot()).createScreenCapture(new Rectangle(
d.width / 2 - 350, d.height / 2 - 450, 700, 900));
System.out.println("截图完成");
} catch (AWTException e1) {
e1.printStackTrace();
}
try {
ImageIO.write(buffImg, "jpg", new File(path));
System.out.println("图片存储完成");
} catch (IOException e1) {
e1.printStackTrace();
}
}
// 和库中人脸照片进行比对
static String fileName;
static void getFiles(String filePath) throws Exception {
File root = new File(filePath);
File[] files = root.listFiles();
for (File file : files) {
fileName = file.getName();
System.out.println(fileName);
System.out.println("使用者:" + fileName.split("\\.")[0]);
new Face().OneToOne(path, file.getAbsolutePath());
System.out.println("比对完成");
}
}
// 获取相似度
static float s;
public static float getSimilarity(float f) {
return s = f;
}
// 识别用户
public static void identify() throws Exception {
System.out.println("正在验证用户···");
if (s > 0.9) {
JOptionPane.showMessageDialog((new JFrame().getContentPane()),
"身份验证成功,欢迎" + fileName.split("\\.")[0] + "使用", "系统信息",
JOptionPane.INFORMATION_MESSAGE);
System.out.println(fileName.split("\\.")[0] + "识别成功");
// 释放键盘
// wi.resetKeyboard();
lt.dispose();
canvas.dispose();
System.exit(0);
}
JOptionPane.showMessageDialog((new JFrame().getContentPane()),
"身份验证失败,请重新验证···", "警告",
JOptionPane.WARNING_MESSAGE);
System.out.println("验证失败");
canvas.repaint();
long time = 0;
while (time < 155) {
time++;
if (time == 149) {
screenShot();
canvas.setTitle("正在识别,请稍后···");
}
}
try {
getFiles("D:/temporary");
identify();
} catch (Exception e1) {
e1.printStackTrace();
}
}
// 系统事件拦截器
static WinEventInterceptor wi = new WinEventInterceptor();
public static void main(String[] args) throws Exception {
lt.init();
login();
cameraInit();
// 屏蔽键盘
// wi.setKeyDisable();
}
}
这是登录管理界面的代码
package com.pag.admin;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import com.pag.services.UserServices;
import com.pag.winControl.TakePhoto;
public class AdminLogin extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
JButton jb1,jb2;
JTextField jtf;
JPasswordField jpwd;
JLabel jl1,jl2;
JPanel jp1,jp2,jp3;
// 获取显示器属性
static Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
public AdminLogin()
{
//创建组件
jb1=new JButton("确认");
jb2=new JButton("取消");
jtf=new JTextField(10);
jpwd=new JPasswordField(10);
jl1=new JLabel("管理员账号:");
jl2=new JLabel("管理员密码:");
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
// 按钮事件
jb1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
valida();
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
jb2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
//设置布局管理器
this.setLayout(new GridLayout(3,1,5,5));
//添加组件
jp1.add(jl1);
jp1.add(jtf);
jp2.add(jl2);
jp2.add(jpwd);
jp3.add(jb1);
jp3.add(jb2);
this.add(jp1);
this.add(jp2);
this.add(jp3);
//设置窗体属性
this.setTitle("管理员登录");
this.setBounds(d.width/2-200, d.height/2-110, 400, 220);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
// 验证管理员
public void valida() throws Exception{
System.out.println(jtf.getText());
System.out.println(jpwd.getText());
System.out.println(UserServices.check(jtf.getText()));
if (!UserServices.check(jtf.getText())) {
System.out.println("当前账号非管理员");
} else if(jtf.getText().equals("admin")){
System.out.println("is administrator");
System.out.println(UserServices.getPwdByUsername(jtf.getText()));
if (UserServices.getPwdByUsername(jtf.getText()).equals(jpwd.getText())) {
this.dispose();
AdminManage.setvisi();
} else {
System.out.println(jpwd.getText());
System.out.println(UserServices.getPwdByUsername("admin"));
System.out.println("密码错误");
}
}
}
public static void main(String[] args) throws Exception {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
}
new AdminLogin();
new AdminManage();
new TakePhoto();
}
}
这是管理界面的
package com.pag.admin;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import javax.imageio.stream.FileImageInputStream;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import com.pag.entity.User;
import com.pag.services.UserServices;
import com.pag.winControl.TakePhoto;
public class AdminManage extends JDialog implements ActionListener {
static JDialog jd = new JDialog();
/**
*
*/
private static final long serialVersionUID = 1L;
private Map<String, JPanel> panels;
private MainPane mainPane;
private JButton check = new JButton("查看照片");
private JButton dele = new JButton("删除用户");
private JButton edit = new JButton("更新信息");
private JButton reFresh = new JButton("刷新");
private JButton select = new JButton("选择图片");
private JButton camera = new JButton("进行拍照");
private JButton commit = new JButton("添加新用户");
private JButton update = new JButton("提交更新");
private JButton close = new JButton("关闭");
// 获取显示器属性
static Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
// 内部类,主面板
private class MainPane extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
JTabbedPane tabs;
MainPane() {
setLayout(new BorderLayout());
tabs = new JTabbedPane();
add(BorderLayout.CENTER, tabs);
add(BorderLayout.SOUTH, new Buttons());
}
// 添加组件
public Component addTab(String title, Component component) {
return tabs.add(title, component);
}
}
// 所有数据界面
JTable tableView = new tableView();
class view extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
view() throws Exception{
setLayout(new BorderLayout());
JScrollPane pane = new JScrollPane(tableView);
add(pane);
setVisible(true);
}
}
// 获取选中行的ID
public int getID(JTable jt){
// 选中行
int rowNum = jt.getSelectedRow();
// 获取选中的ID
return Integer.valueOf((String) jt.getValueAt(rowNum, 0));
}
// 查看照片------------------------------------------------------------------------------------------------------------------
public void checkPhoto() throws Exception{
UserServices.getPhoto(getID(tableView));
String path = "D:\\temporary\\tempora.jpg";
JFrame jf = new JFrame();
ImageIcon img = null;
JLabel label = new JLabel();
System.out.println("获取图片");
System.out.println(new File(path).length());
img = new ImageIcon(path);
img.setImage(img.getImage().getScaledInstance(400, 400,Image.SCALE_DEFAULT));
label.setIcon(img);
jf.add(label);
jf.setSize(400, 400);
jf.setAlwaysOnTop(true);
jf.setResizable(false);
jf.setLocationRelativeTo(null);
jf.setVisible(true);
}
// 更新信息--------------------------------------------------------------------------------------------------------------------
public void edit(){
User user = new User();
user.setId(getID(tableView));
user.setPassword(jtfs.get(1).getText());
user.setMobile(jtfs.get(4).getText());
user.setIsOff(Integer.valueOf(jtfs.get(5).getText()));
try {
user.setUserImg(image2byte(jtfs.get(6).getText()));
} catch (Exception e) {
}
user.setImgFeature(null);
try {
UserServices.editUser(user);
System.out.println("update success");
} catch (Exception e1) {
e1.printStackTrace();
}
}
// 图片转换为byte
public byte[] image2byte(String path) {
byte[] data = null;
FileImageInputStream input = null;
try {
input = new FileImageInputStream(new File(path));
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int numBytesRead = 0;
while ((numBytesRead = input.read(buf)) != -1) {
output.write(buf, 0, numBytesRead);
}
data = output.toByteArray();
output.close();
input.close();
} catch (FileNotFoundException ex1) {
ex1.printStackTrace();
} catch (IOException ex1) {
ex1.printStackTrace();
}
return data;
}
// 删除记录
public int delete() throws Exception{
UserServices.delet(getID(tableView));
return 1;
}
// 添加新用户或更新信息
static JPanel jp;
static JLabel jl;
String sexs = "(男1,女0)";
String isoff = "(1√,0×)";
String[] columns = {"*用户名:", "*密码:", "*姓名:", "*性别"+sexs+":", "手机:", "*可否登录"+isoff+":","照片:"};
static List<JTextField> jtfs;
{
jtfs = new ArrayList<JTextField>();
for (int i = 0; i < 7; i++){
jtfs.add(new JTextField());
}
}
public class addOrEdit extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
addOrEdit(){
setLayout(new GridLayout(9, 1, 5, 5));
for (int i = 0; i < 7; i++) {
jp = new JPanel();
jl = new JLabel(columns[i]);
jp.setLayout(new GridLayout(1,2,5,5));
jl.setFont(new Font("宋体", Font.BOLD, 32));
jp.add(jl);
jp.add(jtfs.get(i));
add(jp);
}
JLabel label = new JLabel("*为必填信息");
label.setFont(new Font("宋体", 0, 18));
label.setForeground(Color.red);
add(label);
add(new Buttons(""));
setVisible(true);
}
}
// 获取原数据到更新
void dataTOEdit(){
try{
for (int i = 0; i < 7; i++) {
if (i == 0||i==2||i == 3) {
jtfs.get(i).setEditable(false);
}
jtfs.get(i).setText((String) tableView.getValueAt(tableView.getSelectedRow(), i+1));
}
}catch (Exception e){
// do nothing···
}
}
// 弹窗选择照片
static void chooseFile(Component com) {
JFileChooser jfc = new JFileChooser();
jfc.setMultiSelectionEnabled(false);
if (jfc.showOpenDialog(com) == JFileChooser.APPROVE_OPTION) {
String filepath = jfc.getSelectedFile().getAbsolutePath();
jtfs.get(6).setText(filepath);
}
jfc.setVisible(true);
}
// 添加新用户
void addNewUser() {
User user = new User();
try {
user.setId(UserServices.getLastId()+1);
} catch (Exception e1) {
e1.printStackTrace();
}
user.setUsername(jtfs.get(0).getText());
user.setPassword(jtfs.get(1).getText());
user.setReanName(jtfs.get(2).getText());
user.setSex(jtfs.get(3).getText());
user.setMobile(jtfs.get(4).getText());
user.setIsOff(Integer.valueOf(jtfs.get(5).getText()));
if (jtfs.get(6).getText().equals("")||jtfs.get(6).getText()==null) {
user.setUserImg(null);
}else {
try {
System.out.println(image2byte(jtfs.get(6).getText()));
user.setUserImg(image2byte(jtfs.get(6).getText()));
System.out.println(user.getUserImg());
System.out.println(image2byte(jtfs.get(6).getText())==user.getUserImg());
} catch (Exception e1) {
e1.printStackTrace();
}
}
user.setImgFeature(null);
try {
UserServices.add(user);
} catch (Exception e) {
e.printStackTrace();
}
}
// 所有数据table
private class tableView extends JTable{
/**
*
*/
private static final long serialVersionUID = 1L;
String[] columns = { "ID","用户名", "密码", "姓名", "性别", "手机", "可否登录"};
DefaultTableModel dataModel = new DefaultTableModel(null,columns);
ResultSet rs;
// 查看
tableView() throws Exception{
setRowHeight(25);
int count = dataModel.getRowCount();
while (count > 0) {
dataModel.removeRow(0);
}
rs = UserServices.viewRs();
while (rs.next()) {
String id = rs.getString(1);
String userName = rs.getString(2);
String pwd = rs.getString(3);
String name = rs.getString(4);
String sex = rs.getString(5);
String mobile = rs.getString(6);
String isOff = rs.getString(7);
//Blob b = rs.getBlob("");
Vector<String> v = new Vector<String>();
v.add(id);
v.add(userName);
v.add(pwd);
v.add(name);
v.add(sex);
v.add(mobile);
v.add(isOff);
dataModel.addRow(v);
}
setModel(dataModel);
}
public boolean isCellEditable(int row,int column){
return false;
}
}
// 所有按钮
private class Buttons extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
// 构造器
Buttons() {
setLayout(new FlowLayout(FlowLayout.RIGHT, 6, 1));
add(check);
add(dele);
add(edit);
add(reFresh);
add(close);
}
Buttons(String s){
setLayout(new FlowLayout(FlowLayout.RIGHT, 6, 1));
add(select);
add(camera);
add(commit);
add(update);
}
}
// 所有按钮事件
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("查看照片")){
if (tableView.getSelectedRowCount()<=0) {
System.out.println("未选中用户");
}else {
System.out.println("查看照片");
try {
checkPhoto();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
if (e.getActionCommand().equals("删除用户")){
if (tableView.getSelectedRowCount()<=0) {
System.out.println("未选中用户");
}else {
System.out.println("删除用户");
getID(tableView);
try {
delete();
if(delete() == 1){
System.out.println("删除成功");
}
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
if (e.getActionCommand().equals("更新信息")){
if (tableView.getSelectedRowCount()<=0) {
System.out.println("未选中用户");
}else {
System.out.println("更新信息");
dataTOEdit();
}
}
if (e.getActionCommand().equals("刷新")){
System.out.println("刷新界面");
dispose();
try {
new AdminManage();
} catch (Exception e1) {
e1.printStackTrace();
}
setvisi();
}
if (e.getActionCommand().equals("关闭")){
System.out.println("关闭");
System.exit(0);
TakePhoto.close();
}
if (e.getActionCommand().equals("选择图片")){
System.out.println("选择图片");
chooseFile(this);
}
if (e.getActionCommand().equals("进行拍照")){
System.out.println("摄像机拍照");
TakePhoto.view();
this.hide();
try {
Thread.sleep(2000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
TakePhoto.screenShot();
try {
Thread.sleep(2000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
this.setVisible(true);
TakePhoto.hide();
jtfs.get(6).setText("D:/temporary/tempor.jpg");
}
if (e.getActionCommand().equals("添加新用户")){
System.out.println("添加新用户");
try {
addNewUser();
} catch (Exception e1) {
e1.printStackTrace();
}
}
if (e.getActionCommand().equals("提交更新")){
System.out.println("提交更新");
try {
edit();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
// 主类构造器
public AdminManage() throws Exception {
init();
jd.setTitle("用户管理");
jd.setBounds(d.width/2-400, d.height/2-300, 800, 600);
jd.setLocationRelativeTo(null);
jd.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
mainPane = new MainPane();
jd.setContentPane(mainPane);
jd.setVisible(false);
jd.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
check.addActionListener(this);
dele.addActionListener(this);
edit.addActionListener(this);
reFresh.addActionListener(this);
select.addActionListener(this);
camera.addActionListener(this);
commit.addActionListener(this);
close.addActionListener(this);
update.addActionListener(this);
installTabs();
}
public static void setvisi(){
jd.setVisible(true);
}
// 初始化,创建标签
private void init() throws Exception {
panels = new LinkedHashMap<String, JPanel>();
panels.put("查看用户信息", new view());
panels.put("添加/更新用户信息", new addOrEdit());
}
// 标签加入到组件
private void installTabs() {
for (String s : panels.keySet()){
mainPane.addTab(s, panels.get(s));
}
}
public static void main(String[] args) throws Exception {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
}
new AdminManage();
new TakePhoto();
}
}
主要的代码就这些,调用摄像头、和人脸识别的那些就是调用而已。现在就是导出后这里面的功能都不正常了
别沉啊,大佬们,帮帮忙,谢谢啦
右击项目,单击export=》java=》选第三个Runnable Jar file (可执行的jar文件),Next,
选择launch configuration(程序入口配置),Exportdestination(导出目标)
Library handing:
选择第一个 引用的jar包会整合到项目中去。
选择第二个 引用的jar包会单独放在项目根目录下。
选择第三个 引用的jar包会单独放在一个文件夹下,这个文件夹和导出的jar放在同一目录下,
finish。
好像是这样的顺序 看了一眼 ,可以对照下如果正确咱们再讨论
library handling:下的Copy required libraries into a sub-folder next to the generatedJAR --->finish
导出成功会有两个文件夹 : jar 跟 x_lib ,这两个文件夹在一个目录下(必须的) 弄好了再运行下试试 结果
搜了下,给你连接 看看管用么 http://blog.csdn.net/hqs_1992/article/details/50899878