命令行执行java_在命令行中直接运行带main方法的java

用了很久的java,基本都是交给服务器完成的执行,有page之类的入口,或者是在IDE工具中直接 Run As Java Application.

并且一直对安装java之后配置JAVA_HOME,path,classpath三个环境变量不是很理解。

对于在命令行中如何运行带包路径带jar包依赖的含有main主方法的java类呢?

注:本次操作中class都已经由eclipse编译生成,故不在此赘述javac命令的使用方法.运行的OS环境为 Win 7.

1.不带包的HelloWorld

这个是在所有java入门的例子都会使用的。

public classHelloWorld {public static voidmain(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 (build1.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 -Djava.ext.dirs=D:\workspace\eclipse\jiandan_image_spider\lib SpiderTest

或者使用相对路径,lib目录与bin目录同级。

java -Djava.ext.dirs=../lib com.test.SpiderTest

得到想要的结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值