/* * To change this template, choose Tools | Templates * and open the template in the editor. */ /* * Class2exe.java * * Created on 2009-6-13, 22:28:44 */ package class2exe; /** * * @author Administrator */ public class Class2exe extends javax.swing.JFrame { /** Creates new form Class2exe */ public Class2exe() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jTabbedPane1 = new javax.swing.JTabbedPane(); jPanel1 = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jTextField2 = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); jButton2 = new javax.swing.JButton(); jPanel2 = new javax.swing.JPanel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jTextField3 = new javax.swing.JTextField(); jButton3 = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); jTextArea1 = new javax.swing.JTextArea(); jButton4 = new javax.swing.JButton(); jTextField4 = new javax.swing.JTextField(); jLabel7 = new javax.swing.JLabel(); jButton5 = new javax.swing.JButton(); jPanel3 = new javax.swing.JPanel(); jLabel9 = new javax.swing.JLabel(); jButton6 = new javax.swing.JButton(); jLabel10 = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); jButton7 = new javax.swing.JButton(); jLabel12 = new javax.swing.JLabel(); jLabel13 = new javax.swing.JLabel(); jLabel14 = new javax.swing.JLabel(); jLabel15 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); getContentPane().setLayout(null); jTabbedPane1.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT); setLayout(null); jPanel1.setLayout(null); jButton1.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jButton1.setText("生成exe"); jPanel1.add(jButton1); jButton1.setBounds(300, 180, 120, 25); jLabel1.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jLabel1.setText("step1:选择配置好的jar文件"); jPanel1.add(jLabel1); jLabel1.setBounds(10, 30, 210, 16); jLabel2.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jLabel2.setText("step2:输入要生的可执行文件exe名称"); jPanel1.add(jLabel2); jLabel2.setBounds(10, 140, 250, 16); jTextField1.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jTextField1.setText("jTextField1"); jPanel1.add(jTextField1); jTextField1.setBounds(10, 60, 260, 22); jTextField2.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jTextField2.setText("jTextField2"); jPanel1.add(jTextField2); jTextField2.setBounds(10, 180, 260, 22); jLabel3.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jLabel3.setText(".exe"); jPanel1.add(jLabel3); jLabel3.setBounds(240, 180, 80, 16); jButton2.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jButton2.setText("选择jar"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); jPanel1.add(jButton2); jButton2.setBounds(300, 60, 120, 25); jTabbedPane1.addTab("jar模式", jPanel1); jPanel2.setLayout(null); jLabel4.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jLabel4.setText("step1:选择主类文件"); jPanel2.add(jLabel4); jLabel4.setBounds(10, 30, 170, 16); jLabel5.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jLabel5.setText("step2:选择其他类文件"); jPanel2.add(jLabel5); jLabel5.setBounds(10, 100, 160, 16); jLabel6.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jLabel6.setText("step3:输入生成的可执行文件名称"); jPanel2.add(jLabel6); jLabel6.setBounds(10, 270, 240, 16); jTextField3.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jTextField3.setText("jTextField3"); jTextField3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextField3ActionPerformed(evt); } }); jPanel2.add(jTextField3); jTextField3.setBounds(10, 60, 260, 22); jButton3.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jButton3.setText("选择"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); jPanel2.add(jButton3); jButton3.setBounds(300, 60, 120, 25); jTextArea1.setColumns(20); jTextArea1.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jTextArea1.setRows(5); jScrollPane1.setViewportView(jTextArea1); jPanel2.add(jScrollPane1); jScrollPane1.setBounds(10, 130, 260, 120); jButton4.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jButton4.setText("选择"); jPanel2.add(jButton4); jButton4.setBounds(300, 180, 120, 25); jTextField4.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jTextField4.setText("jTextField4"); jPanel2.add(jTextField4); jTextField4.setBounds(10, 300, 220, 22); jLabel7.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jLabel7.setText(".exe"); jPanel2.add(jLabel7); jLabel7.setBounds(240, 300, 90, 16); jButton5.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jButton5.setText("生成exe"); jPanel2.add(jButton5); jButton5.setBounds(300, 290, 120, 25); jTabbedPane1.addTab("class 模式", jPanel2); jPanel3.setLayout(null); jLabel9.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jLabel9.setText("rar.exe路径:"); jPanel3.add(jLabel9); jLabel9.setBounds(20, 20, 110, 30); jButton6.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jButton6.setText("选择rar.exe"); jPanel3.add(jButton6); jButton6.setBounds(130, 20, 120, 25); jLabel10.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jLabel10.setText("jLabel10"); jPanel3.add(jLabel10); jLabel10.setBounds(20, 60, 430, 20); jLabel11.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jLabel11.setText("java版本:"); jPanel3.add(jLabel11); jLabel11.setBounds(20, 130, 90, 16); jButton7.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jButton7.setText("选择jvm.rar"); jPanel3.add(jButton7); jButton7.setBounds(130, 120, 120, 25); jLabel12.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jLabel12.setText("jLabel12"); jPanel3.add(jLabel12); jLabel12.setBounds(20, 160, 450, 16); jLabel13.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jLabel13.setText("本程序版本:"); jPanel3.add(jLabel13); jLabel13.setBounds(20, 240, 80, 16); jLabel14.setFont(new java.awt.Font("宋体", 0, 14)); // NOI18N jLabel14.setText("1.0.0.0"); jPanel3.add(jLabel14); jLabel14.setBounds(20, 270, 130, 16); jLabel15.setFont(new java.awt.Font("DialogInput", 1, 14)); // NOI18N jLabel15.setText("作者:Allchi [Software08] [QQ:499737410]"); jPanel3.add(jLabel15); jLabel15.setBounds(50, 320, 370, 22); jTabbedPane1.addTab("软件环境", jPanel3); getContentPane().add(jTabbedPane1); jTabbedPane1.setBounds(10, 40, 470, 390); jTabbedPane1.setLayout(null); jLabel8.setFont(new java.awt.Font("宋体", 1, 24)); // NOI18N jLabel8.setForeground(new java.awt.Color(0, 102, 255)); jLabel8.setText("Class to exe "); getContentPane().add(jLabel8); jLabel8.setBounds(10, 10, 460, 30); setVisible(true); validate(); }// </editor-fold> private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void jTextField3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Class2exe().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JButton jButton5; private javax.swing.JButton jButton6; private javax.swing.JButton jButton7; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JTextArea jTextArea1; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2; private javax.swing.JTextField jTextField3; private javax.swing.JTextField jTextField4; // End of variables declaration } package class2exe; import java.io.*; public class Class2jar { File mainFile; File[] otherFile; File mfFile=new File("mf.mf"); BufferedWriter out; Runtime run=Runtime.getRuntime(); String sub; public Class2jar(File mainFile) { this.mainFile=mainFile; String name=mainFile.getName(); sub=name.substring(0,name.length()-6); System.out.println(sub+"类创建完成"); try { out=new BufferedWriter(new FileWriter(mfFile)); } catch (IOException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } } public void doit(){ try { out.write("Manifest-Version: 1.0"+"/n"); out.write("Created-By: 1.5.0_02 (Sun Microsystems Inc.)"+"/n"); out.write("Main-Class: "+sub+"/n"); out.flush(); //run.exec("jar cfm main.jar mf.mf "+mainFile.getName()); run.exec("jar cfm main.jar mf.mf *.class"); System.out.println("main.jar创建完成"); } catch (IOException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } } } package class2exe; /** * * @author Allchi */ import java.io.*; public class Jar2exe { /** * Var * */ public File jvmFile=new File("jvm.rar");//jvm.rar public File jarFile;//*.jar public File outExeFile;//output exe File public File rarFile=new File("C://Program Files//WinRAR//Rar.exe");//Rar.exe public File zipFile=new File("Zip.rar");//Zip.rar Runtime run=Runtime.getRuntime(); /** * Methods * */ Jar2exe(File jarFile,File rarFile){ try { //rar e -o+ zip.rar //解压文件 run.exec("C://Program Files//WinRAR//Rar.exe e -o+ Zip.rar"); run.exec("C://Program Files//WinRAR//Rar.exe u -o+ zip.exe @list.txt"); System.out.println("zip.exe生成完毕"); } catch (IOException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } } } package class2exe; import java.io.File; public class tryClass2exe { /** * @param args */ public static void main(String[] args) { File mainFile=new File("abcde.class"); Class2jar a=new Class2jar(mainFile); a.doit(); Jar2exe b=new Jar2exe(new File("main.jar"),new File("")); } }