JAVA 关于随手小实验小工具记事本写法
本博客只是为了写一段简单的编译运行的 不用基于IDEA 或者 Eclipse 等 主流的JAVA ide。
废话不多说,用简易发送邮件为例。在jdk 相关环境装完成后,对应的基础jar 在sun 或者后面oracle 都有所优化等这个不赘述,楼主的本地环境是jdk1.8 (cmd==>java -version)
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
工具记事本
也许长时间用IDE工具的都有智能的提示,记事本无法提供只能一步步写代码,第一次写这么长的代码 当然也得找找API 和各路大神的现成的东西。(代码不写包名层级 不要给自己找刺激了)
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
class EmailSender{
static String senderAddress = "用你自己的@qq.com";
static String bcAddress = "依旧用你自己的@foxmail.com";
static String bccAddress = "需要给自己开暗门的@163.com";
static String senderAccount = senderAddress;
static String senderPassword = "rdrtsogsheyhhfge";//QQ邮箱独有的 不知道怎么设置去百度下就好了
//楼主比较懒直接用构造方法调用了
public EmailSender(String context) throws MessagingException {
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.host", "smtp.qq.com");
Session session = Session.getInstance(props);
session.setDebug(true);
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(senderAddress));
msg.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(bcAddress));
msg.setRecipient(MimeMessage.RecipientType.BCC,new InternetAddress(bccAddress));
msg.setSubject("Test is OK");
msg.setContent(context, "text/html;charset=UTF-8");
msg.setSentDate(new Date());
Transport transport = session.getTransport();
transport.connect(senderAccount, senderPassword);
transport.sendMessage(msg, new Address[]{new InternetAddress(recipientAddress)});
transport.close();
System.out.println("Send success");
}
public static void main(String[] args) throws MessagingException {
new EmailSender("TEST JAVAC -D .JAR -CP.;/.xxx.jar");
}
}
就这一个java 文件 依赖的东西有点多
最开始以为只会依赖 javax-mail-api ,所以编译是可以通过的神奇吧?
此处多说一句:jdk 环境变量没有配置 “.;" 记得按照其他的**** 帖子进行配置下
编译:
javac -cp ".;.\javax-mail-api-version.jar" EmailSender.java
编译讲道理不会报错(没报错目录下面会有.class文件) 记得将java 文件和jar 包放在一起 并且 cmd 进入该目录
然后照猫画虎 因为在 Helloworld.java 时候 就是javac 编译以后 直接 java 运行对吧
所以
java -cp ".;.\javax-mail-api-version.jar" EmailSender
神奇吧 报错了,对于一个经常用IDE工具尤其是maven 或者gradle的骚年人来说 这个也不难 百度**** 查下很简单就会发现缺少了 mail 版本包。找一个版本的download 下来。
再来一遍
javac -cp ".;.\javax-mail-api-version.jar; .\mail-version.jar" EmailSender.java
编译还是可以生成class 本以为没事
继续运行
java -cp ".;.\javax-mail-api-version.jar; .\mail-version.jar" EmailSender
================================================================================================
涛声依旧,黑屏上面还是打印着这些黑底白字。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
以为是路径啥的折腾吧。没用
最后结果是什么::::::::::
--------------------------------结论-------------->>>>>>>>>>JAVA 类继承引用 相关的话,是要讲究先后顺序滴!
按照上述调整后
javac -cp ".;.\mail-version.jar;.\javax-mail-api-version.jar " EmailSender.java
java -cp ".;.\mail-version.jar;.\javax-mail-api-version.jar " EmailSender
成功了!
小伙伴们: java 带jar 的编译运行不仅会了,还知道了 类的加载顺序,平时IDE 都会智能的给你补齐提示啥的。但是…………自己被自己坑了一把,所以发个小博客来教训下自己。(要知道平时这个点,我这个程序员早下班了)。