- 浏览: 1152623 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
经过试验,不管是否是 Jar 包,不管是否是 Tomcat 部署,以下三个方法均可实现。
package test;
public class MyPath {
public static String getProjectPath() {
java.net.URL url = MyPath.class .getProtectionDomain().getCodeSource().getLocation();
String filePath = null ;
try {
filePath = java.net.URLDecoder.decode (url.getPath(), "utf-8");
} catch (Exception e) {
e.printStackTrace();
}
if (filePath.endsWith(".jar"))
filePath = filePath.substring(0, filePath.lastIndexOf("/") + 1);
java.io.File file = new java.io.File(filePath);
filePath = file.getAbsolutePath();
return filePath;
}
public static String getRealPath() {
String realPath = MyPath.class .getClassLoader().getResource("").getFile();
java.io.File file = new java.io.File(realPath);
realPath = file.getAbsolutePath();
try {
realPath = java.net.URLDecoder.decode (realPath, "utf-8");
} catch (Exception e) {
e.printStackTrace();
}
return realPath;
}
public static String getAppPath(Class<?> cls){
//检查用户传入的参数是否为空
if (cls==null )
throw new java.lang.IllegalArgumentException("参数不能为空!");
ClassLoader loader=cls.getClassLoader();
//获得类的全名,包括包名
String clsName=cls.getName();
//此处简单判定是否是Java基础类库,防止用户传入JDK内置的类库
if (clsName.startsWith("java.")||clsName.startsWith("javax.")) {
throw new java.lang.IllegalArgumentException("不要传送系统类!");
}
//将类的class文件全名改为路径形式
String clsPath= clsName.replace(".", "/")+".class";
//调用ClassLoader的getResource方法,传入包含路径信息的类文件名
java.net.URL url =loader.getResource(clsPath);
//从URL对象中获取路径信息
String realPath=url.getPath();
//去掉路径信息中的协议名"file:"
int pos=realPath.indexOf("file:");
if (pos>-1) {
realPath=realPath.substring(pos+5);
}
//去掉路径信息最后包含类文件信息的部分,得到类所在的路径
pos=realPath.indexOf(clsPath);
realPath=realPath.substring(0,pos-1);
//如果类文件被打包到JAR等文件中时,去掉对应的JAR等打包文件名
if (realPath.endsWith("!")) {
realPath=realPath.substring(0,realPath.lastIndexOf("/"));
}
java.io.File file = new java.io.File(realPath);
realPath = file.getAbsolutePath();
try {
realPath=java.net.URLDecoder.decode (realPath,"utf-8");
}catch (Exception e){
throw new RuntimeException(e);
}
return realPath;
}//getAppPath定义结束
}
使用Jar包,在Tomcat的运行结果如下:
ProjectPath: D:\J2EE\Tomcat 6.0\webapps\MyService1WebP\WEB-INF\lib
RealPath: D:\J2EE\Tomcat 6.0\webapps\MyService1WebP\WEB-INF\classes
Apppath: D:\J2EE\Tomcat 6.0\webapps\MyService1WebP\WEB-INF\classes
java.version |
Java 运行时环境版本 |
java.vendor |
Java 运行时环境供应商 |
java.vendor.url |
Java 供应商的 URL |
java.home |
Java 安装目录 |
java.vm.specification.version |
Java 虚拟机规范版本 |
java.vm.specification.vendor |
Java 虚拟机规范供应商 |
java.vm.specification.name |
Java 虚拟机规范名称 |
java.vm.version |
Java 虚拟机实现版本 |
java.vm.vendor |
Java 虚拟机实现供应商 |
java.vm.name |
Java 虚拟机实现名称 |
java.specification.version |
Java 运行时环境规范版本 |
java.specification.vendor |
Java 运行时环境规范供应商 |
java.specification.name |
Java 运行时环境规范名称 |
java.class.version |
Java 类格式版本号 |
java.class.path |
Java 类路径 |
java.library.path |
加载库时搜索的路径列表 |
java.io.tmpdir |
默认的临时文件路径 |
java.compiler |
要使用的 JIT 编译器的名称 |
java.ext.dirs |
一个或多个扩展目录的路径 |
os.name |
操作系统的名称 |
os.arch |
操作系统的架构 |
os.version |
操作系统的版本 |
file.separator |
文件分隔符(在 UNIX 系统中是“/”) |
path.separator |
路径分隔符(在 UNIX 系统中是“:”) |
line.separator |
行分隔符(在 UNIX 系统中是“/n”) |
user.name |
用户的账户名称 |
user.home |
用户的主目录 |
user.dir |
用户的当前工作目录 |
获取的代码示例:
- public class SystemProperty {
- public static void main(String args[]) {
- System.out.println("java_vendor:" + System.getProperty( "java.vendor" ));
- System.out.println("java_vendor_url:"
- + System.getProperty("java.vendor.url" ));
- System.out.println("java_home:" + System.getProperty( "java.home" ));
- System.out.println("java_class_version:"
- + System.getProperty("java.class.version" ));
- System.out.println("java_class_path:"
- + System.getProperty("java.class.path" ));
- System.out.println("os_name:" + System.getProperty( "os.name" ));
- System.out.println("os_arch:" + System.getProperty( "os.arch" ));
- System.out.println("os_version:" + System.getProperty( "os.version" ));
- System.out.println("user_name:" + System.getProperty( "user.name" ));
- System.out.println("user_home:" + System.getProperty( "user.home" ));
- System.out.println("user_dir:" + System.getProperty( "user.dir" ));
- System.out.println("java_vm_specification_version:"
- + System.getProperty("java.vm.specification.version" ));
- System.out.println("java_vm_specification_vendor:"
- + System.getProperty("java.vm.specification.vendor" ));
- System.out.println("java_vm_specification_name:"
- + System.getProperty("java.vm.specification.name" ));
- System.out.println("java_vm_version:"
- + System.getProperty("java.vm.version" ));
- System.out.println("java_vm_vendor:"
- + System.getProperty("java.vm.vendor" ));
- System.out
- .println("java_vm_name:" + System.getProperty( "java.vm.name" ));
- System.out.println("java_ext_dirs:"
- + System.getProperty("java.ext.dirs" ));
- System.out.println("file_separator:"
- + System.getProperty("file.separator" ));
- System.out.println("path_separator:"
- + System.getProperty("path.separator" ));
- System.out.println("line_separator:"
- + System.getProperty("line.separator" ));
- }
=======================================================================
System.setProperties( "proxySet", "true" );
System.setProperties( "proxyHost", "192.168.31.117" );
System.setProperties( "proxyPort", "80" );
这里的proxySet,proxyHost,proxyPort等等这些系统的属性名称是从哪里知道的?
——通过JDK文档中对java.lang.system的static Properties getProperties()方法的介绍,可以获知所有可用属性的含义。
——根本没有proxySet,proxyHost和proxyPort, 这些是user defined property,那么用户定义的属性如何起作用的?
***JavaVM实现Proxy的方法***
要想让java应用使用代理连接网络,只需要设置一下system properties,有两种方法可以设置,一是直接在java代码里面调用System.setProperty()方法,还有就是通过-D选项添加 java虚拟机参数,如 java -Dhttp.proxyHost=192.168.254.254 -Dhttp.proxyPort=9000 ,当然也可以指定不使用代理访问的网站或者主机,http.nonProxyHosts属性指定不使用代理访问的域。示例如下所示:
System.setProperty("http.proxyHost", "192.168.254.254");
System.setProperty("http.proxyPort", "9000");
System.setProperty("http.nonProxyHosts", "localhost");
如果你想使用ftp代理可以以相同的方式设定如下系统属性:ftp.proxyHost, ftp.proxyPort , and 使用socket代理可以设定socks.ProxyHost socks.ProxyPort 也可以使用如下代码:
- Properties sysProperties = System.getProperties();
- //Specify proxy settings
- sysProperties.put("proxyHost", "myhost");//myhost设置为代理的地址
- sysProperties.put("proxyPort", "myport");//myport设置为代理端口
- sysProperties.put("proxySet", "true");
补充:
Java网络代理服务器环境变量
Java 是一种面向对象的网络语言,Java
的JVM已经提供了可以设置与网络代理服务相关的环境变量,这些环境变量是按照键值名(Key)和值(Value)实现配置的。而这些环境变量与应用程序
息息相关。比如:大家比较熟悉的classpath环境变量等。从表面上看,JVM的环境变量有点类似Windows的*.ini,该环境变量是按照纯文
本的格式存储的。
Http 代理服务是目前Internet环境下,应有最为广泛的代理服务。一般的网络浏览器,如:微软的IE和网景的Netscape都提供对Http代理服务的 配置选项。在Java应用程序中,对Http代理服务的使用是通过配置Java 虚拟机的JVM的环境变量来实现的。针对http代理服务,Java 虚拟机提供了如下环境变量:
http.proxySet 该环境变量用以设置应用程序是否使用http协议代理,值为True/False。
注意:在设置环境变量时候,变量值True/False是按照字符串的形式进行设置的。
http.proxyHost 该环境变量用以设置应用程序所使用的http协议代理服务器的主机,比如:我们使用 http://172.14.10.34
作为http的代理服务器主机。
http.proxyport 该环境变量用以设置应用程序所使用的http协议代理服务器的主机的端口号。比如:我们使用 http://172.14.10.34
的8080端口作为http的代理服务器。
如:将Java应用程序的Http代理服务器设为http://172.14.10.34
,端口为8080,可以使用如下代码:
String host="http://172.14.10.34
";
String port="8080";
System.setproperty("http.proxySet", "true");
System.setproperty("http.proxyHost", host);
System.setproperty("http.proxyport", port);
一旦设置好了Java应用程序的http代理环境变量,Java应用程序就可以通过http代理服务透明地访问与http相关的网络资源。
发表评论
-
一个例子全部说明java泛型中的K,V,T,E,?,object的意思及其用法
2013-03-07 11:09 70551.意思 jdk中的K,V,T,E等泛型名称很多人以为 ... -
Log4j 把不同包的日志打印到不同位置
2012-11-29 08:23 1154需要的包和测试的代码下载附件! 如果需要将不同的日 ... -
Java多线程发展简史
2012-09-16 14:25 1040转自:http://www.raychase.ne ... -
Java编码易疏忽的十个问题
2012-09-06 08:52 918在Java编码中,我们容易 ... -
网络编程
2012-09-04 13:30 977计算机网络基础 什么是计算机网络 把分布在 ... -
java的concurrent用法详解
2012-08-03 11:28 1023我们都知道,在JDK1.5之前,Java中要进行业务并发时 ... -
Java程序员必知的8大排序
2012-07-05 09:56 10308 种排序之间的关系: ... -
Comparator与Comparable的区别
2012-07-05 08:38 1224当需要排序的集合或数组不是单纯的数字类型的时候,通常可以使用C ... -
RSA算法Java实现
2012-06-27 08:22 1419Java代码 package c ... -
队列阻塞浅析
2012-06-17 18:10 936这几天所做的项目中涉及到了队列阻塞机制,通过研究整理如下 ... -
Java面试过程中会遇到的问题
2012-06-13 13:04 11511、abstract的method是否可同时是static,是 ... -
【解惑】深入jar包:从jar包中读取资源文件
2012-06-13 13:02 1106我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等)。 ... -
java 处理文件路径中的空格
2012-06-13 12:57 1542问题背景: windows下有个目录名称Program ... -
java内存分配机制
2012-06-13 12:52 1176通过这几天对一个 ... -
byte[]转化成其他数据类型
2012-05-14 16:41 1666Java与其他语言数据类型之间的转换方法实例程序 /*** ... -
java中byte转换int时为何与0xff进行与运算
2012-05-14 16:39 1075java中byte转换int时为何 ... -
java整型数与网络字节序的 byte[] 数组转换关系
2012-05-14 16:31 6479工作项目需要在 java 和 c/c++ 之间进行 ... -
利用 Base64 缩短 UUID 至22位
2012-04-15 18:57 7185UUID还是比较常用的,尤其在web应用里。 有时在UR ... -
图解Java中的值传递与引用传递(更新版)
2012-04-09 12:49 1187编程的人,都会遇到值传递与引用传递的困惑,不过很快都会迎 ... -
AWT Swing SWT JFace GWT 简介与比较
2012-03-15 13:49 4261AWT Abstract Windows To ...
相关推荐
在Java编程语言中,获取当前运行程序的路径是一项常见的需求,这主要涉及到系统环境和程序资源的定位。本文将深入探讨如何在Java程序中获取这些信息,并提供多种方法来实现这一目标。 首先,我们可以通过`java.lang...
在Java编程环境中,有时...总结来说,编译和运行带有JAR包的Java程序涉及编译源代码、设置类路径、创建MANIFEST.MF文件指定主类、打包成JAR并最后运行JAR。通过使用IDE或构建工具,这个过程可以变得更加便捷和高效。
在实际项目开发中,将这些JAR包添加到项目的类路径(Classpath)中是至关重要的,因为Java虚拟机在运行时需要找到这些依赖才能正常工作。可以通过IDE(如Eclipse、IntelliJ IDEA)的构建工具(如Maven、Gradle)来...
windows运行jar包指定jdk路径的脚本文件。可以不用系统的jdk运行,指定某个文件下的jdk运行jar包
Java 程序打成 jar 包是将 Java 程序打包成一个可执行的文件,以便于用户直接运行程序,而不需要安装 JRE 环境和数据库。下面是将 Java 程序打成 jar 包的步骤。 首先,需要完成 Java GUI 程序的开发工作。在 ...
重新打包(重命名)的工具,在jar包重复的情况下使用。 这里我们以 gson.jar 为例,在 gson.jar 包目录下新建一个文本文件,名字随意,例如 rule.... java -jar jarjar.jar process rule.txt gson.jar mygson.jar 命令
这是因为通过class.getResource()方法在IDEA中运行的路径和生成jar包获取的的路径是不同的。打成jar包后,获取图片的路径中有"xxx.jar!"这里面的内容是不能够被操作系统识别出来的,因此直接通过路径来获取文件是不...
Java反射技术是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个技术主要基于Java.lang.reflect包中的类和接口,如Class、Constructor、Method和Field等。...
JAVA打包成可运行的JAR程序 在 Java 开发中,为了方便程序的部署和分发,通常需要将程序打包成可执行的 JAR 文件。在这个过程中,需要注意几个重要的步骤,包括将依赖的 lib 包和配置文件正确地配置,生成 Class-...
在Java开发过程中,将程序打包成可执行的...通过以上步骤,我们可以将Java程序打包成jar或exe文件,方便用户下载和运行,同时也提高了软件的分发效率。在实际操作中,根据项目需求选择合适的打包工具和策略至关重要。
在Java编程中,将程序打包成JAR文件是常见的部署方式,这使得代码可以作为一个独立的可执行单元进行分发。然而,在打包包含数据库连接的Java应用程序时,可能会遇到一些问题,尤其是涉及到像MySQL这样的外部数据库。...
在IT行业中,我们经常需要处理各种编程任务,其中之一就是在命令行环境下运行包含外部jar依赖的Java程序。在Windows操作系统中,我们通常会使用批处理(BAT)文件来自动化这一过程。下面将详细介绍如何通过BAT文件...
1. **导入jar包**:将所需的jar包添加到项目的类路径(ClassPath)中,这样编译器和运行时环境就能找到并加载这些库。在IDE如Eclipse或IntelliJ IDEA中,可以直接通过项目设置导入外部库。 2. **理解API**:每个jar...
完成上述步骤后,即可在任何地方运行依赖于`mysqlJdbc.jar`的Java程序,无需在命令行中指定额外参数。 #### 方法2:使用`-cp`或`-classpath`参数 另一种更为灵活的方法是在执行Java命令时动态指定JAR包位置,即使...
然而,在Java应用程序中集成Kettle,需要将相关的Jar包添加到项目的类路径中,以便能够调用其API来执行工作流或转换。 首先,要理解Java与Kettle的集成,我们需要知道Kettle的主要组件。Kettle由以下几部分组成: ...
Java程序的jar(Java Archive)包是Java平台特有的打包机制,它将多个类文件、资源文件和元数据打包成一个单一的可执行文件,便于分发、存储和执行。在Java开发中,jar包扮演着至关重要的角色,因为它使得代码模块化...
你需要根据你的Java运行环境选择合适的JAR包。 要实现Java连接Oracle数据库,首先需要在项目中引入对应的JDBC驱动JAR包。这可以通过以下步骤完成: 1. 将下载的JDBC驱动JAR文件添加到项目的类路径中。如果你使用的...
在IT行业中,将Java项目打包成可执行的jar或exe文件是常见的需求,特别是对于希望在没有Java环境的用户机器上运行的应用程序。本篇主要介绍如何使用IntelliJ IDEA(Idea)将Springboot或Java项目打包为jar,并通过...
"Java获取视频时间JAR包"正是为了解决这个问题而设计的,它提供了一个Java库,允许开发者通过简单的API调用来获取视频文件的时长。下面将详细介绍这个JAR包的用途、工作原理以及如何在Java项目中使用它。 首先,让...
Java 配置数据库 Jar 包操作 Java 配置数据库 Jar 包操作是指在 Java 项目中将 MySQL 数据库的 Jar 包导入到项目中,以便使用 JDBC 连接数据库的操作。下面是关于 Java 配置数据库 Jar 包操作的详细知识点: 什么...