Java 合并外部jar

Java 合并外部jar,java,jakarta-mail,Java,Jakarta Mail,我已经在Netbeans IDE中创建了简单邮件发送java项目。我在lib文件夹中添加了一个外部jarjavax.mail.jar。我想将多个jar合并到一个jar中,但是javax.mail.jar没有合并。请告诉我如何合并javax.mail.jar 源代码: package nrb.vanggi; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.Sim

我已经在Netbeans IDE中创建了简单邮件发送java项目。我在lib文件夹中添加了一个外部jarjavax.mail.jar。我想将多个jar合并到一个jar中,但是javax.mail.jar没有合并。请告诉我如何合并javax.mail.jar

源代码:

package nrb.vanggi;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Properties;
 import java.util.concurrent.ThreadLocalRandom;
 import javax.mail.BodyPart;
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.PasswordAuthentication;
 import javax.mail.Session;
 import javax.mail.Transport;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Example extends JFrame {
Session session = null;

public Example() {
    initUI();
}

public final void initUI() {

    JPanel panel = new JPanel();
    getContentPane().add(panel);

    panel.setLayout(null);

    JButton send = new JButton("Send");
    send.setBounds(50, 60, 80, 30);
    send.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent event) {
            startingMailSend();

            emailSending();

        }
    });

    panel.add(send);

    setSize(300, 200);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
}

private void startingMailSend() {

    //1) get the session object     
    Properties properties = System.getProperties();
    properties.setProperty("mail.smtp.host", "");
    properties.put("mail.smtp.auth", "true");

    //properties.put("mail.smtp.port", "465");
    //properties.put("mail.smtp.ssl.enable", "true");
    session = Session.getDefaultInstance(properties,
            new javax.mail.Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("rahim@duttafashion.info", "**********");
                }
            });

}

private void emailSending() {

    try {
        System.err.println("call");
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat df = new SimpleDateFormat("hh:mm:ss dd, MMM");

        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress("UserName" + "<" + "rahim@duttafashion.info" + ">"));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress("vanggibd@gmail.com"));
        message.setSubject(ThreadLocalRandom.current().nextLong(5000, 10000) + " " + "This is Subject");

        MimeMultipart multipart = new MimeMultipart("related");
        BodyPart messageBodyPart1 = new MimeBodyPart();
        messageBodyPart1.setContent(df.format(cal.getTime()) + "" + "Body area How are all????", "text/html");
        multipart.addBodyPart(messageBodyPart1);

        message.setContent(multipart);
        Transport.send(message);
        System.out.println("message sent....");
        JOptionPane.showMessageDialog(null, "Mail send success");
    } catch (MessagingException ex) {
        JOptionPane.showMessageDialog(null, ex);
        ex.printStackTrace();
        System.out.println("error");
    } catch (Exception ee) {
        System.err.println(" errorrrr" + ee);
    } finally {
        System.err.println("finally call");
    }

}

public static void main(String[] args) {

    Example ex = new Example();
    ex.setVisible(true);

}
包装nrb.vanggi;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.text.simpleDataFormat;
导入java.util.Calendar;
导入java.util.Properties;
导入java.util.concurrent.ThreadLocalRandom;
导入javax.mail.BodyPart;
导入javax.mail.Message;
导入javax.mail.MessaginException;
导入javax.mail.PasswordAuthentication;
导入javax.mail.Session;
导入javax.mail.Transport;
导入javax.mail.internet.InternetAddress;
导入javax.mail.internet.MimeBodyPart;
导入javax.mail.internet.mimessage;
导入javax.mail.internet.MimeMultipart;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JOptionPane;
导入javax.swing.JPanel;
公共类示例扩展了JFrame{
会话=空;
公共示例(){
initUI();
}
公共最终无效初始值(){
JPanel面板=新的JPanel();
getContentPane().add(面板);
panel.setLayout(空);
JButton send=新JButton(“send”);
发送.挫折(50,60,80,30);
send.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件){
startingMailSend();
电子邮件发送();
}
});
面板。添加(发送);
设置大小(300200);
setLocationRelativeTo(空);
setDefaultCloseOperation(关闭时退出);
}
私有void startingMailSend(){
//1) 获取会话对象
Properties=System.getProperties();
properties.setProperty(“mail.smtp.host”,”);
properties.put(“mail.smtp.auth”、“true”);
//properties.put(“mail.smtp.port”,“465”);
//properties.put(“mail.smtp.ssl.enable”、“true”);
session=session.getDefaultInstance(属性,
新的javax.mail.Authenticator(){
@凌驾
受保护的密码身份验证getPasswordAuthentication(){
返回新密码身份验证(“rahim@duttafashion.info", "**********");
}
});
}
私有void emailSending(){
试一试{
系统错误打印项次(“调用”);
Calendar cal=Calendar.getInstance();
SimpleDataFormat df=新的SimpleDataFormat(“hh:mm:ss dd,MMM”);
MimeMessage message=新MimeMessage(会话);
message.setFrom(新的Internet地址(“用户名”+);
message.addRecipient(message.RecipientType.TO,新Internet地址(“vanggibd@gmail.com"));
message.setSubject(ThreadLocalRandom.current().nextLong(500010000)+“这是Subject”);
MimMultipart multipart=新的MimMultipart(“相关”);
BodyPart消息BodyPart1=新的MimeBodyPart();
messageBodyPart1.setContent(df.format(cal.getTime())+“”+“Body区域所有内容如何?”,“text/html”);
multipart.addBodyPart(messageBodyPart1);
message.setContent(多部分);
传输。发送(消息);
System.out.println(“消息已发送…”);
showMessageDialog(null,“邮件发送成功”);
}捕获(消息例外){
showMessageDialog(null,ex);
例如printStackTrace();
System.out.println(“错误”);
}捕获(异常ee){
系统错误println(“errorrrr”+ee);
}最后{
System.err.println(“最终调用”);
}
}
公共静态void main(字符串[]args){
Example ex=新示例();
例如,setVisible(真);
}
}

Sample build.xml配置:

您真的、真的、真的不应该合并它。当你这样做的时候,所有的东西都会断开,特别是当你排除所有的META-INF文件时。@BillShannon我已经合并了另一个jar文件,比如jcalendar-1.4.jar、mysql-connector-java-5.1.14-bin.jar。只有javax.mail.jar不合并你真的,真的,真的不应该合并它。当你这样做的时候,所有的东西都会断开,特别是当你排除所有的META-INF文件时。@BillShannon我已经合并了另一个jar文件,比如jcalendar-1.4.jar、mysql-connector-java-5.1.14-bin.jar。只有javax.mail.jar不合并
Sample build.xml configure:
<target name="-post-jar">
     <jar jarfile="dist/MailSend.jar">
      <zipfileset src="${dist.jar}" excludes="META-INF/*" />   
     <zipfileset src="lib/javax.mail.jar" excludes="META-INF/*"/>
     <manifest>
         <attribute name="Main-Class" value="nrb.vanggi.Example"/>
     </manifest>
     </jar>
    </target>