第一部分:单文件

一、背景
目标文件HelloWorld.java

package ccdate;

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}

二、编译

cd ccdate
javac HelloWorld.java

如果不报错而且多了一个HelloWorld.classs,恭喜你编译成功。

三、运行

java HelloWorld

什么?报错了

Error: Could not find or load main class HelloWorld

四、解决方案
网上搜索到的最普遍的说法是CLASSPATH没有正确的设置。

export JAVA_HOME=/usr/java/jdk1..0_112
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

然后执行source /etc/profile
然而,错误依旧。

五、最终的解决
原因,我的示例类有一个包路径ccdate

cd ..  //就是离开当前的包路径
java ccdate.HelloWorld

OK,能看到让人激动的Hello World!打印了。

第二部分:含第三方依赖库的项目

一、背景
  1. 项目名称fs-esl
  2. 项目主路径/home/fs-esl
  3. 项目结构
     3.1 java源文件的路径

    fs-esl/com/*

//本文档实际测试时就一个main类,
         //具体路径fs-esl/com/vvhi/fsesl/begining/FsEsl.java
         //这个类就干一件事,打印Hello World!
     3.2 项目关联的第三方库

    fs-esl/lib

3.3 menifest文件

    fs-esl/menifest

二、编译

cd /home/fs-esl
javac -Djava.ext.dirs=./lib com/vvhi/fsesl/begining/FsEsl.java

如果多了一个FsEsl.java旁边多了一个同名的class文件,编译成功。

三、menifest
编辑menifest,根据实际情况改写。示例:

Manifest-Version: 1.0
Class-Path: . lib/slf4j-api-1.7..jar lib/log4j-slf4j-imp
l-2.8..jar lib/log4j-api-2.8..jar lib/log4j-core-2.8..
jar lib/spring-jdbc-4.3..RELEASE.jar lib/junit-4.12.jar
lib/spring-beans-4.3..RELEASE.jar lib/spring-core-4.3..
RELEASE.jar lib/spring-tx-4.3..RELEASE.jar lib/hamcrest-
core-1.3.jar lib/commons-logging-1.2.jar lib/esl.jar
Main-Class: com.vvhi.fsesl.begining.FsEslMain

四、打包

cd /home/fs-esl
jar cvmf menifest fs-esl.jar com/vvhi/fsesl/begining/FsEsl.class

如果不报错而且多了一个fs-esl.jar文件,打包成功。

五、运行

java -jar fs-esl.jar

如果屏幕出现Hello World!

恭喜!你成功的完成了一次手动编译、打包java项目的全过程。

JAVA命令行编译及运行的更多相关文章

  1. java命令行编译和运行引用jar包的文件

    经常遇到需要添加第三方jar文件的情况.在命令行状态下要加载外部的jar文件非常麻烦,很不好搞,在网上折腾了很久终于搞定了,在这里做个笔记: 2.运行:java -Djava.ext.dirs=./l ...

  2. 使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0

    使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0 网上的 MapReduce WordCount 教程对于如何编译 WordCount.java 几乎是一笔带过… 而有写到的 ...

  3. Java 命令行编译项目

    如果是用Exlipse, 第三方的包可以放在eclipse文件夹的jre包的lib文件夹中! (初学者的一些总结-高手们勿喷哈-) 原因: 以前一直用Eclispe编程环境运行Java.非常舒服,就像 ...

  4. Linux java 命令行编译 jar包

    Java 命令行编译成class,然后在打包成jar文件. 编译成class javac -classpath $CLASS_PATH -d class ./src/Hello.java 可以通过ja ...

  5. Java 命令行 编译、执行、打包

    Java 命令行 编译.执行.打包 一般来说 IDE 能够很方便的编译打包. 我写这篇文章是遇到了不能使用 IDE 的情况,简单记录一下,不做深入探讨. 环境 linux jdk 1.8 简单的编译执 ...

  6. 如何使用命令行编译和运行java文件

    相信大家现在一般都在使用IDE环境来开发运行java文件,但我觉得可以在命令行里面简单运行java文件,技多不压身. 接下来我来说一下编译和运行java文件: 第一步,首先下一个入门程序(注意:一定要 ...

  7. java命令行编译运行、打包jar

    过程:java文件→class文件→exe执行文件 --------------------------------------------- 一.编译:从.java生成.class   (1)ecl ...

  8. 加载依赖的jar包在命令行编译和运行java文件

    在命令里编译和执行java文件,当应用程序需要需要依赖的jar包里面的class文件才能编译运行的时候,应该这样做: 1. 首先是编译过程,在命令行里面执行: (1) javac -classpath ...

  9. java 命令行 编译 运行程序

    学习java使用IDE前最好先用用命令行的javac.java来跑一跑简单的程序,这样能够熟悉一下包管理对.class文件路径的影响. 我们先写一段简单的代码: package com.csdn.lk ...

随机推荐

  1. android 中的 window,view,activity具体关系

    通过讨论这个问题,我们能够见识到google是对面向对象模式的理解,能够理解android底层的一些调用.这也是一道很常见的面试题. 我们这篇文章就来解决这四个问题: Android  中view的显 ...

  2. scala 学习笔记六 推导

    1.介绍 在Scala中,推导将生成器.过滤器.和定义组合在一起. 2.例子 有一种将result用作val(而不是var)的方式,:“就地”构建result,而不是逐项构建,利用yield关键字,当 ...

  3. ORA-01843: 无效的月份,执行sql语句更改为美国语言后仍然失败的解决办法

    ORA-01843: 无效的月份失败的 sql 为:XXXXXXXXXXXXXXXX 执行sql语句更改为美国语言后仍然失败, ALTER SESSION SET NLS_DATE_LANGUAGE= ...

  4. java基础-类变量,类方法

  5. 【js】用正则表达式对文字进行局部替换

    比如有个字符串http://www.55188.com/thread-8306254-2-3.html,需要把8306254后面的2替换成其它数字,其它保持不变,该如何办呢?请看代码: var url ...

  6. 栈的应用实例——中缀表达式转换为后缀表达式

    声明:本程序读入一个中缀表达式,将该中缀表达式转换为后缀表达式并输出后缀表达式. 注意:支持+.-.*./.(),并且输入时每输入完一个数字或符号都要加一个空格,特别注意的是在整个表达式输入完成时也要 ...

  7. android 使用AsyncHttpClient框架上传文件以及使用HttpURLConnection下载文件

    AsyncHttpClient开源框架android-async-http还是非常方便的. AsyncHttpClient该类通经常使用在android应用程序中创建异步GET, POST, PUT和 ...

  8. jquery.datepicker、jquery.validate、jquery.uploadify冲突解决

    Jquery 1.11.2 Jquery.validate 1.13.1 Jquery.Uploadify 3.2(flash版) Jquery.DatePicker 用的是Jquery-ui 1.1 ...

  9. Linux常用shell脚本

    在运维中,尤其是linux运维,都知道脚本的重要性,脚本会让我们的 运维事半功倍,所以学会写脚本是我们每个linux运维必须学会的一门功课,如何学好脚本,最关键的是就是大量的练习 和实践. 1.用Sh ...

  10. Gulp构建前端自动化工作流之:常用插件介绍及使用

    在对Gulp有了一个初步的了解之后,我们开始构建一个较为完整的Gulp开发环境. 本文主要分为6个段落: 1. 构建项目目录结构(Directory Structure Build) 2. 插件介绍及 ...