在命令行中直接运行带main方法的java
2017-05-19 10:23
447 查看
用了很久的java,基本都是交给服务器完成的执行,有page之类的入口,或者是在IDE工具中直接 Run As Java Application.
并且一直对安装java之后配置JAVA_HOME,path,classpath三个环境变量不是很理解。
对于在命令行中如何运行带包路径带jar包依赖的含有main主方法的java类呢?
注:本次操作中class都已经由eclipse编译生成,故不在此赘述javac命令的使用方法.运行的OS环境为 Win 7.
1.不带包的HelloWorld
这个是在所有java入门的例子都会使用的。
进入命令行,cd至HelloWorld.java编译后的的HelloWorld.class所处的bin目录,执行 java HelloWorld
报错:Exception in thread "main" java.lang.UnsupportedClassVersionError: HelloWorld : Unsupported major.minor version 51.0。
查原因,运行时的java版本过低。
编译时的java版本为1.7,运行时为1.6.
两种方法:1.直接改变系统环境变量,JAVA_HOME
2.改变当前运行时的环境变量。
采取第一种就失去了理解命令行的意义了,采取第二种。
在命令行中执行
再次执行java HelloWorld,仍然报上述错误。
java版本仍然为1.6
因为在命令行工作台运行的时候,path路径已经被加载了,所以1.6版本已经生效,我们现在要做的就是是改变了的JAVA_HOME生效
选择查看当前path内容
得到了一大堆东西,可以看到java运行时的确是1.6
由于只需要改变java运行时,也可以
或者直接改变path不用理会JAVA_HOME
此时再执行java HelloWorld,得到了想要的
或者在某些情况下会出现以下错误:错误: 找不到或无法加载主类 HelloWorld
说明此时运行时中的classpath出现了某些问题,如上,重新配置当前运行环境的classpath变量即可。
2.运行带包的HelloWorld.
在命令行控制台中进入com包的父目录,也就是bin目录,执行
得到结果
3.运行导入了jar包的方法
运行
异常:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest
有多种解决方式:
a.设置classpath.
再次执行
得到想要的结果。
b.在执行java 命令时加入 -classpath,也可以写作 -cp
参考:http://www.cnblogs.com/people/archive/2013/07/07/3176761.html
c.要设置一大堆jar太繁琐,可以设置路径依赖。
参考:命令行执行Java程序加载指定目录中的Jar文件
或者使用相对路径,lib目录与bin目录同级。
得到想要的结果。
并且一直对安装java之后配置JAVA_HOME,path,classpath三个环境变量不是很理解。
对于在命令行中如何运行带包路径带jar包依赖的含有main主方法的java类呢?
注:本次操作中class都已经由eclipse编译生成,故不在此赘述javac命令的使用方法.运行的OS环境为 Win 7.
1.不带包的HelloWorld
这个是在所有java入门的例子都会使用的。
public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld!"); } }
进入命令行,cd至HelloWorld.java编译后的的HelloWorld.class所处的bin目录,执行 java HelloWorld
报错:Exception in thread "main" java.lang.UnsupportedClassVersionError: HelloWorld : Unsupported major.minor version 51.0。
查原因,运行时的java版本过低。
编译时的java版本为1.7,运行时为1.6.
两种方法:1.直接改变系统环境变量,JAVA_HOME
2.改变当前运行时的环境变量。
采取第一种就失去了理解命令行的意义了,采取第二种。
在命令行中执行
set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_55
再次执行java HelloWorld,仍然报上述错误。
java -version
java版本仍然为1.6
java version "1.6.0_43" Java(TM) SE Runtime Environment (build 1.6.0_43-b01) Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)
因为在命令行工作台运行的时候,path路径已经被加载了,所以1.6版本已经生效,我们现在要做的就是是改变了的JAVA_HOME生效
选择查看当前path内容
echo %path%
得到了一大堆东西,可以看到java运行时的确是1.6
set path=%JAVA_HOME%\bin;%path%
由于只需要改变java运行时,也可以
set path=%JAVA_HOME%\bin;
或者直接改变path不用理会JAVA_HOME
set path=C:\Program Files\Java\jdk1.7.0_55\bin
此时再执行java HelloWorld,得到了想要的
HelloWorld!
或者在某些情况下会出现以下错误:错误: 找不到或无法加载主类 HelloWorld
说明此时运行时中的classpath出现了某些问题,如上,重新配置当前运行环境的classpath变量即可。
set classpath=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
2.运行带包的HelloWorld.
package com.test;
public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld!"); } }
在命令行控制台中进入com包的父目录,也就是bin目录,执行
java com.test.HelloWorld
得到结果
HelloWorld!
3.运行导入了jar包的方法
public class SpiderTest { public static void main(String[] args) { System.out.println(" 测试开始! "); // TODO Auto-generated method stub SpiderPic sp = new SpiderPic(); sp.initializeUrlList(); String url = "http://www.25meinv.com/qingchun/"; for (int i=1538; i>1537; i--){ String htmlUrl = url +i; SpiderPic.spider(htmlUrl); } for(String s:SpiderPic.urlList){ System.out.println(" 测试结束 "+ s); } } }
SpiderPic方法里导入了HttpClient包
import java.io.InputStream; import org.apache.http.client.config.CookieSpecs; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.HashSet; public class SpiderPic { //TODO 具体实现方法,略 }
运行
java SpiderTest
异常:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest
有多种解决方式:
a.设置classpath.
set classpath=%classpath%;D:\workspace\eclipse\jiandan_image_spider\lib\commons-logging-1.2.jar;D:\workspace\eclipse\jiandan_image_spider\lib\httpclient-4.4.jar;D:\workspace\eclipse\jiandan_image_spider\lib\httpclient-cache-4.4.jar;D:\workspace\eclipse\jiandan_image_spider\lib\httpclient-win-4.4.jar;D:\workspace\eclipse\jiandan_image_spider\lib\httpcore-4.4.jar;D:\workspace\eclipse\jiandan_image_spider\lib\httpmime-4.4.jar;
再次执行
java SpiderTest
得到想要的结果。
b.在执行java 命令时加入 -classpath,也可以写作 -cp
参考:http://www.cnblogs.com/people/archive/2013/07/07/3176761.html
c.要设置一大堆jar太繁琐,可以设置路径依赖。
参考:命令行执行Java程序加载指定目录中的Jar文件
java -Djava.ext.dirs=D:\workspace\eclipse\jiandan_image_spider\lib SpiderTest
或者使用相对路径,lib目录与bin目录同级。
java -Djava.ext.dirs=../lib com.test.SpiderTest
得到想要的结果。
相关文章推荐
- java.lang.OutOfMemoryError:Java heap space解决方法(项目中直接运行main方法,做案例,没有启动tomcat的情况)
- 在非web环境下,直接用java命令行运行程序时,对于通过getResources找不到jar包中的资源和目录的解决方法
- eclipse 中的Android不能直接运行java main方法
- 运行Java应用必须通过main()方法吗?
- 没有main 函数也可以运行java的方法
- MyEclipse运行java程序,如何向main方法注入args参数?
- jdt 创建java工程,生成代码,运行main方法
- java中运行dos命令行方法
- (48)Java中没有main方法也能运行输出的一种特例
- java运行带有main方法的jar文件
- android工程下不能运行java main程序的解决方法
- java代码没有main方法也可以运行!
- java jar包命令行下可以双击不运行解决方法(改变java默认图标)
- dos下用java命令运行含包名的main方法
- java运行jar包中指定Class的main方法
- 一个java包中有两个含Main的类的运行方法
- JAVA 运行 提示 Exception in thread "main" java.lang.NoClassDefFoundError 解决方法
- maven - 使用maven运行java的main方法