`

命令行运行Java

    博客分类:
  • Java
阅读更多

  很久没在命令行运行Java了,今天突然要运行一个觉得是在是生疏,虽然之前已有同样的经过,可惜没记录下来,吃一堑长一智,这次必须得记录下来了。

 

   我首先遇到的第一个问题是编码问题,因为我是在eclipse上写好的一个测试类ApacheStatusStatistic.java,并且能在eclipse上能正确运行。但是当我把这个文件拷贝文件 E:\test目录下,并在命令行执行时,其报“需要为 class,interface或enum....”错误,详情如下:

经多翻查找,终于知道其为编码问题,原来在ecplise环境中的编码是UTF-8,改为ANSI就解决了。

  遇到的第二个问题是编译运行的问题。我的类如下:

package apache;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.util.HashMap;
import java.util.Map;

public class ApacheStatusStatistic {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			java.net.URL url = new java.net.URL("http://www.apache.org/server-status?auto");
			BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
			
			String open = "Open";
			String waiting = "Waiting";
			String readingRequest = "Reading request";
			String sendingReply = "Sending reply";
			String keepingAlive = "Keeping alive";
			String dnsLookup = "DNS lookup";
			String logging = "Logging";
			// 额外的
			String startingUp = "Starting up";
			String closingConnection = "Closing connection";
			String gracefullyFinishing = "Gracefully finishing";
			String idleCleanupofWorker = "Idle cleanup of worker";

			Map<String, Integer> data = new HashMap<String, Integer>();
			data.put(open, 0);
			data.put(waiting, 0);
			data.put(readingRequest, 0);
			data.put(sendingReply, 0);
			data.put(keepingAlive, 0);
			data.put(dnsLookup, 0);
			data.put(logging, 0);
			// 额外的
			data.put(startingUp, 0);
			data.put(closingConnection, 0);
			data.put(gracefullyFinishing, 0);
			data.put(idleCleanupofWorker, 0);

			String str;
			System.out.println("基本统计数据如下:");
			while ((str = in.readLine()) != null) {
				if (str.startsWith("Scoreboard:")) {
					String scoreboard = str.substring(11);
					// System.out.println(scoreboard);
					for (int i = 0; i < scoreboard.length(); i++) {
						char c = scoreboard.charAt(i);
						switch (c) {
						case '_':
							data.put(waiting, data.get(waiting) + 1);
							break;
						case 'S':
							data.put(startingUp, data.get(startingUp) + 1);
							break;
						case 'R':
							data.put(readingRequest, data.get(readingRequest) + 1);
							break;
						case 'W':
							data.put(sendingReply, data.get(sendingReply) + 1);
							break;
						case 'K':
							data.put(keepingAlive, data.get(keepingAlive) + 1);
							break;
						case 'D':
							data.put(dnsLookup, data.get(dnsLookup) + 1);
							break;
						case 'C':
							data.put(closingConnection, data.get(closingConnection) + 1);
							break;
						case 'L':
							data.put(logging, data.get(logging) + 1);
							break;
						case 'G':
							data.put(gracefullyFinishing, data.get(gracefullyFinishing) + 1);
							break;
						case 'I':
							data.put(idleCleanupofWorker, data.get(idleCleanupofWorker) + 1);
							break;
						/** Open slot with no current process */
						case '.':
							data.put(open, data.get(open) + 1);
							break;
						}
					}
				} else {
					System.out.println(str);
				}
			}
			
			System.out.println("状态统计数据如下:");
			System.out.println(open + ":" + data.get(open));
			System.out.println(waiting + ":" + data.get(waiting));
			System.out.println(readingRequest + ":" + data.get(readingRequest));
			System.out.println(sendingReply + ":" + data.get(sendingReply));
			System.out.println(keepingAlive + ":" + data.get(keepingAlive));
			System.out.println(dnsLookup + ":" + data.get(dnsLookup));
			System.out.println(logging + ":" + data.get(logging));
			/** 额外的*/
			System.out.println(startingUp + ":" + data.get(startingUp));
			System.out.println(closingConnection + ":" + data.get(closingConnection));
			System.out.println(gracefullyFinishing + ":" + data.get(gracefullyFinishing));
			System.out.println(idleCleanupofWorker + ":" + data.get(idleCleanupofWorker));
			
			in.close();
		} catch (MalformedURLException e) {
		} catch (IOException ee) {
		}
	}
}

   我编译并运行,但结果却是“no class def found error”,详情如下:

 后来经过调查时,运行编译好的文件时,必须进入其所在的目录如下图所示:

 

但我运行时却报:Exception in thread "main" java.lang.NoClassDefFoundError: ApacheStatusStatistic (wrong name: apache/ApacheStatusStatistic),详情如下:

经过调查因为包的问题,如果Java类有包名,你必须建相应的包文件夹并把文件编译或拷贝到到相应的文件夹下,如这里

我得在E:\test下创建文件夹apache并把ApacheStatusStatistic.class拷贝到这个文件夹下。并且必须在命令行指定包名,执行如下才成功运行:

终于搞定,铭刻于心呀

  • 大小: 73.4 KB
  • 大小: 72.3 KB
  • 大小: 74.2 KB
  • 大小: 141.2 KB
  • 大小: 57.9 KB
分享到:
评论
1 楼 心碎hhhhh 2012-04-05  
嗯   java 不要加后缀,  还得包名!!!! 

相关推荐

    如何使用命令行方式运行java程序.mp4

    编程大力哥java视频 - 如何使用命令行方式运行java程序,这个视频介绍了如何使用windows自带的命令行工具来运行java程序

    如何通过命令行查看java jdk版本

    通过命令行查看 Java JDK 版本 Java 是一种广泛使用的编程语言,而 JDK(Java Development Kit)是 Java 语言的开发工具包。查看 Java JDK 版本是一个非常基本的操作,然而,许多开发者却不知道如何通过命令行来...

    Java环境安装配置.pdf

    - 使用命令行运行Java程序时,确保命令行的当前目录正确,或者使用完整的jar包路径,例如java -jar /path/to/oxing.demo.javaproxy-1.0.jar。 以上内容涵盖了Java环境在Windows和Linux系统下的安装配置步骤,以及...

    Java命令行运行参数说明大全.txt

    ### Java命令行运行参数详解 #### 一、概述 Java作为一种广泛使用的编程语言,其运行依赖于Java虚拟机(JVM)。为了优化JVM的性能,开发者可以通过命令行传递一系列参数来控制JVM的行为。本文将详细介绍Java命令行...

    Java 命令行以及Java工具总结

    Java是一种广泛使用的编程语言和计算平台,它拥有丰富的命令行工具集合,这些工具支持从开发到部署的整个Java应用程序生命周期。这些工具包含在JDK(Java Development Kit)中,是开发者日常工作的基础。下面将对...

    Java程序设计基础:使用命令行方式开发Java程序.pptx

    使用命令行方式开发Java程序 使用命令行方式开发Java程序 Java程序的运行机制 了解Java程序的运行机制 掌握使用命令行方式开发Java程序的步骤 Java程序的运行机制 编写源程序 编译源程序 由Java解释器解释运行 字节...

    dos命令测试java jar文件 命令行下运行JUnit测试 命令运行java

    在命令行下运行Java JAR文件,可以使用以下命令: ```bash java -jar jar_file_name.jar ``` 这里的`-jar`选项告诉Java虚拟机(JVM)直接从JAR文件中加载主类并执行。 接下来,我们讨论如何在命令行下运行JUnit...

    jmeter 命令行运行解析插件

    在复杂的测试环境中,特别是大型的性能测试项目,通过命令行运行JMeter能避免图形界面(GUI)带来的资源消耗,从而提高测试效率。"jmeter 命令行运行解析插件"正是为了解决这一问题而设计的,它允许用户在没有图形...

    Java 命令行运行参数大全

    ### Java命令行运行参数详解 #### 一、概述 Java作为一种广泛应用的编程语言,其运行依赖于Java虚拟机(JVM)。为了更好地控制Java应用程序的运行环境,开发者可以通过指定一系列命令行参数来调整JVM的行为。本文将...

    三种方法运行Java程,jdk,IDEA,notepad++.pdf

    通过命令行运行Java程序是最基础的方式。按下Windows键+R,输入cmd打开命令提示符。输入`java -version`或`javac -version`来验证JDK是否已成功安装。若无误,可以创建一个简单的Java程序,如HelloWorld.java,使用...

    命令行编译和运行java类

    ### 命令行编译和运行Java类 在日常的软件开发过程中,开发者经常会遇到需要在命令行环境下编译和运行Java程序的情况。本文将详细介绍如何在DOS(Disk Operating System)环境下,通过命令行工具编译和运行Java程序...

    java环境变量设置

    在学习Java编程语言之前,我们...还可以通过命令行运行java -version或javac -version来测试环境变量是否配置成功。如果Java版本信息正确显示,说明环境变量设置已经成功,反之则需要检查上述设置步骤是否出现错误。

    java学习心得

    在学习这一概念时,可以通过在命令行运行Java程序,并添加`-verbose`参数来观察类加载的过程。例如,运行`java -verbose *.class`可以看到程序加载的类文件顺序,只有当我们实际使用到某个类的实例时,该类才会被...

    java基础1---java概述(csdn)————程序.pdf

    配置好环境变量后,就可以在任何位置通过命令行运行Java程序。虽然可以使用简单的文本编辑器(如记事本)编写Java代码,但为了提高开发效率和代码质量,通常我们会选择集成开发环境(IDE),如IntelliJ IDEA或...

    Java cmd命令行模拟工具

    Java cmd命令行模拟工具是一种用于在Java环境中模拟操作系统命令行工具的实用程序。它使得开发者能够在Java代码中执行系统命令,获取命令输出,并对命令行交互进行控制,这对于自动化测试、脚本编写以及需要与系统...

    java源程序(五子棋)

    在Windows系统中,用户通常更习惯于执行.exe文件,而不是通过命令行运行Java程序。为了满足这一需求,开发者可能使用了像JAR2EXE这样的工具,将编译后的Java应用打包成.exe格式,这样非开发人员也能直接双击运行,...

    java及tomcat配置1

    `,这样可以在任何目录下通过命令行运行Java相关工具。 配置完成后,可以通过在命令行中输入`java -version`来验证设置是否正确。如果返回的是你所安装的JDK版本信息,那么环境变量配置就算成功了。 接下来,我们...

    java教程二第2章Java环境和工具.pdf

    在命令行运行Java程序之前,需要配置环境变量。例如,设置`JAVA_HOME`环境变量来指定JDK的安装目录,并将`%JAVA_HOME%\bin`添加到系统路径`PATH`中,以便能在任何目录下运行Java命令。 3. Java工具介绍: - `applet...

    JAVA-JDK.zip

    2. 设置环境变量:将JDK的`bin`目录添加到系统的PATH环境变量中,这样你可以在任何地方通过命令行运行Java工具。 3. 调整`JAVA_HOME`环境变量,将其指向JDK的安装路径。 4. 验证安装:打开命令行窗口,输入`java -...

Global site tag (gtag.js) - Google Analytics