• 在命令行中直接运行带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 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 FilesJavajdk1.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%in;%path%

    由于只需要改变java运行时,也可以

    set path=%JAVA_HOME%in;

    或者直接改变path不用理会JAVA_HOME

    set path=C:Program FilesJavajdk1.7.0_55in

    此时再执行java HelloWorld,得到了想要的

    HelloWorld!

    或者在某些情况下会出现以下错误:错误: 找不到或无法加载主类 HelloWorld

    说明此时运行时中的classpath出现了某些问题,如上,重新配置当前运行环境的classpath变量即可。

    set classpath=.;%JAVA_HOME%lib;%JAVA_HOME%lib	ools.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:workspaceeclipsejiandan_image_spiderlibcommons-logging-1.2.jar;D:workspaceeclipsejiandan_image_spiderlibhttpclient-4.4.jar;D:workspaceeclipsejiandan_image_spiderlibhttpclient-cache-4.4.jar;D:workspaceeclipsejiandan_image_spiderlibhttpclient-win-4.4.jar;D:workspaceeclipsejiandan_image_spiderlibhttpcore-4.4.jar;D:workspaceeclipsejiandan_image_spiderlibhttpmime-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:workspaceeclipsejiandan_image_spiderlib SpiderTest

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

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

    得到想要的结果。

  • 相关阅读:
    Python汉字转换成拼音
    python之Tkinter控件学习
    python 函数式编程:高阶函数,map/reduce
    python的高级特性:切片,迭代,列表生成式,生成器,迭代器
    python tkinter Listbox用法
    python函数定义语法总结
    Cmder 快捷键
    录音水波动画
    图片截取部分显示
    移动web在ios和android下点击元素出现阴影问题
  • 原文地址:https://www.cnblogs.com/huanghongbo/p/6877019.html
Copyright © 2020-2023  润新知