第一部分:Java虚拟机启动时,关于类加载方面的一些动作
当使用java ProgramName.class运行程序时,Java找到JRE,接着找到jvm.dll,把该动态库载入内存,这就是JVM。然后加载其它动态库, 并激活JVM。JVM激活之后会进行一些初始化工作,之后生成BootstrapLoader,该Class Loader是由C++写的。BootstrapLoader加载Launcher.java中的ExtClassLoader,并设定其Parent为 null,意思是ExtClassLoader的Parent Class Loader就是BootstrapLoader。然后BootstrapLoader又加载Launcher.java中的 AppClassLoade,并设定其Parent Class Loader是ExtClassLoader。不过如果调用ExtClassLoader的getParent( )方法,则返回的是null。这两个Class Loader都是以静态类的形式存在,并且都是用Java编写的。
这三个Class Loader它们都有自己的类查找路径:
BootstrapLoader: sun.boot.class.path
ExtClassLoader: java.ext.dirs
AppClassLoader: java.class.path
以上三个路径都是Java的系统属性,可以通过System.getProperty(String key)方法来查看其设置:
System.out.println(System.getProperty("sun.boot.class.path"));
输出:
C:\Program Files\Java\jre1.5.0_04\lib\rt.jar;
C ......
在java代码中经常有读取外部资源的要求:如配置文件等等,通常会把配置文件放在classpath下或者在web项目中放在web-inf下.
1.从当前的工作目录中读取:
try {
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("wkdir.txt")));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
} catch (IOException e) {
}
2,从classpath中读取(读取找到的第一个符合名称的文件):
try {
......
jdk的安装
1、从java.sun.com搞下jdk最新的版本,一般我们用1.6版本的,下载bin格式的jdk,假定下载的文件名为jdk-6u20-linux-i586.bin。
2、chmod u+x jdk-6u20-linux-i586.bin;然后 ./jdk-6u20-linux-i586.bin 解压,假定解压后的文件夹为 jdk1.6_20;
3、在/usr/local/ 建立一个install的目录, 然后把解压后的jdk文件copy到 install目录中,sudo mv ~/jkd1.6_20 ./install/
sudo ln -s ./install/jkd1.6_20 java
这么做是为了防止jdk版本升级,我们只需要更改下软连接就好了。
4、设置环境变量。
sudo vi /etc/profile 最后面添加
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
5、 最后不要忘记把公司两个安全想关的jar包 替换到这里 /usr/local/java/jre/lib/security
svn 安装
1、 wget http://subversion.tigris.org/downloads/subversion-deps-1. ......
好久没用java,突一写起来,发现机器上没有设置环境变量,把设置方法总结一下
1. 修改/etc/profile文件
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。
·用文本编辑器打开/etc/profile
·在profile文件末尾加入:
JAVA_HOME=/usr/share/jdk1.5.0_05
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
2. 修改.bashrc文件或者.profile文件
这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要
给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc文件就可以了。
·用文本编辑器打开用户目录下的.bashrc文件
·在.bashrc文件末尾加入:
set JAVA_HOME=/usr/share/jdk1.5.0_05
export JAVA_HOME
se ......
private static List cloneObject(
Object obj) throws Exception {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(obj);
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut
.toByteArray());
ObjectInputStream in = new ObjectInputStream(byteIn);
return in.readObject();
} ......
send mail use smtp .u can send text or html, send to many peoples if u have a email user and pwd and the smtp of the email which u use.
package org.lc.smtp;
import java.io.IOException;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.util.ByteArrayDataSource;
import com.sun.mail.smtp.SMTPTransport;
/**
* smtp send mail.
* @author lc.
*/
public class smtp {
Message message;
Properties properties = new Properties();
Session session;
/**
*
* @param from mail from
* @param pwd mail pwd
* @param host mail from smtp host
* @param to to someone's mail
*/
public smtp(String from, String pwd, String host, String to) throws MessagingException, IOException {
properties.put("mail.smtp.host", host);// set smtp properties
sessi ......