ubuntu命令行下java工程编辑与算法(第四版)环境配置
ubuntu命令行下java工程编辑与算法(第四版)环境配置
在学习算法(第四版)中的实例时,因需要安装配套的java编译环境,可是在编译java文件的时候总是出各种错误,特在此总结一下。
ubuntu下java环境配置
由于网上教程比较多,而且也较全面,特此摆放一个链接,跟着此教程总就可以配置好oracle的java jdk,如果想更加省事,直接在命令行下键入java,会提示安装各种开源java jdk,只需要一个命令即可:
- sudo apt-get install xxxx //对应java版本
algorithms(第四版)相对应的资料下载
相对应的算法jar包
相对应的算法数据
对应的github,熟悉java的人,可以通过eclipse或idea进行maven和gradle代码配置
算法这门课的配置流程
测试安装环境
跟着官方教程走,环境搭建一般没有问题,测试成功的一个实例
- forest@forest-E351:~/java/code$ javac -d . RandomSeq
- forest@forest-E351:~/java/code$ java edu.princeton.cs.algs4.RandomSeq 5 100.0 200.0
- //运行需要指定包名,否则无法运行,总是指出少主类
- 168.00
- 110.52
- 152.05
- 127.17
- 127.25
javac 与 java命令
- javac
javac用于编译java源文件,生成.class文件
语法:javac [option] source
常用的[option]选项:
A、-classpath <路径>(-cp缩写):指定要使用的类路径或要使用的jar包的路径(jar文件、zip文件(里面都是错啦搜索文件)),使用后
会覆盖CLASSPATH的设定
B、-d <路径> :指定源文件编译后生成.class文件的存放位置 - java
java用于运行javac编译后生成的.class文件
语法:java [option] classname [arguments]
常用的[option]选项:
A、-classpath <路径>(-cp缩写):指定要使用的类路径或要使用的jar包的路径(jar文件、zip文件(里面都是错啦搜索文件)),使用后
会覆盖CLASSPATH的设定
B、[arguments]:传递给main函数的参数 - 用一个简单实例来阐述上面的使用方法
类TestT引用类T,其代码分别如下:
- package a.b; //所在目录/src/java/code/a/b
- import c.d.T;
- public class TestT {
- public static void main(String[] args) {
- T t = new T();
- t.p();
- }
- }
- package c.d; //所在目录/src/java/code/tmp/c/d/
- public class T {
- public void p(){
- System.out.println("class:T");
- }
- }
输入javac编译和java执行命令之后
- //命令输入钱各个文件所在位置
- forest@forest-E351:~/java/code$ tree
- .
- ├── a
- │ └── b
- │ └── TestT.java
- └── tmp
- └── c
- └── d
- └── T.java
- forest@forest-E351:~/java/code/a/b$ javac -classpath ../../tmp TestT.java
- forest@forest-E351:~/java/code$ tree
- .
- ├── a
- │ └── b
- │ ├── TestT.class //相对应的字节码生成
- │ └── TestT.java
- └── tmp
- └── c
- └── d
- ├── T.class //相对应的字节码
- └── T.java
- forest@forest-E351:~/java/code$ java -cp .:tmp a/b/TestT
- //.本地文件夹,表示TestT字节码;tmp用于寻找T字节码;包也是代表目录,tmp不需要详细写成tmp/c/d
- // a/b/TestT用于指定主函数程序
- class:T //程序运行结果
从shell脚本来查看java和javac的使用
一般,一个工程下面都会有lib(引入的必要jar包),classes(保存.class文件),src(.java源代码)三个文件夹。
java文件夹的目录结构如下,文件之间的关系是Client.java调用了DemoService.java的方法;ServerImpl.java调用了DemoService.java的方法;Server.java调用了ServerImpl.java和DemoService.java的方法;
编译前的结构图:

make.sh 编译脚本
- #!/bin/bash
- # Get current position
- TOP_DIR=$(pwd)
- # Add all necessary jars
- LIBPATH=lib/commons-codec-1.6.jar:lib/commons-logging-1.1.1.jar\
- :lib/httpclient-4.2.5.jar:lib/httpcore-4.2.4.jar\
- :lib/junit-4.4.jar:lib/libthrift-1.0.0.jar:lib/log4j-1.2.14.jar\
- :lib/servlet-api-2.5.jar:lib/slf4j-api-1.5.8.jar:lib/slf4j-log4j12-1.5.8.jar
- #compile java file
- # 编译生成的字节码放入本地目录下classes目录下
- # $LIBPATH 表示DemoService.java所引用的jar包
- #src/com/demo/DemoService.java 根据当前sh脚本所在目录找到所需要编译的程序
- javac -cp $LIBPATH src/com/demo/DemoService.java -d ./classes/.
- javac -cp $TOP_DIR/classes:$LIBPATH src/com/server/ServerImpl.java -d ./classes/.
- javac -cp $TOP_DIR/classes:$LIBPATH src/com/server/Server.java -d ./classes/.
- javac -cp $TOP_DIR/classes:$LIBPATH src/com/client/Client.java -d ./classes/.
run.sh运行脚本
- #!/bin/bash
- #Get client/server
- SIDE=$1
- # Get current position
- TOP_DIR=$(pwd)
- # Add all necessary jars
- LIBPATH=lib/commons-codec-1.6.jar:lib/commons-logging-1.1.1.jar\
- :lib/httpclient-4.2.5.jar:lib/httpcore-4.2.4.jar\
- :lib/junit-4.4.jar:lib/libthrift-1.0.0.jar\
- :lib/log4j-1.2.14.jar:lib/servlet-api-2.5.jar\
- :lib/slf4j-api-1.5.8.jar:lib/slf4j-log4j12-1.5.8.jar
- #run program
- # 由于所引用的类的字节码都放在一个classes目录下,我们只需要引入一个目录即可
- # $LIBPATH 引入本程序所需要的jar包
- if [ $SIDE == "server" ];then
- java -cp $TOP_DIR/classes:$LIBPATH com/server/Server
- else
- java -cp $TOP_DIR/classes:$LIBPATH com/client/Client
- fi
编译后的结构图:

ubuntu命令行下java工程编辑与算法(第四版)环境配置的更多相关文章
- Ubuntu 命令行下快速打开各类文件 分类: ubuntu shell 2014-11-18 20:06 210人阅读 评论(0) 收藏
xdg-open 命令可以用来在Ubuntu下快速打开各类文件. 下面是从 manual 文档里截取的内容: 可以知道,该命令的功能是在图形界面下按照用户的平时习惯打开各类文件,甚至是链接. 这样,我 ...
- Ubuntu命令行下安装,卸载软件包的过程[转]
一.Ubuntu中软件安装方法 1.APT方式 (1)普通安装:apt-get install softname1 softname2 …; (2)修复安装:apt-get -f install so ...
- 【转】Ubuntu命令行下安装、卸载、管理软件包的方法
原文网址:http://oss.org.cn/html/47/n-67447.html 一.Ubuntu中软件安装方法 1.APT方式 (1)普通安装:apt-get install softname ...
- Ubuntu命令行下安装、卸载、管理软件包的方法
一.Ubuntu中软件安装方法 1.APT方式 (1)普通安装:apt-get install softname1 softname2 -; (2)修复安装:apt-get -f install so ...
- 如何命令行编译Java工程
在src下的包含Main的包下打开命令行,javac -classpath “路径到src,不到包下” Main.java
- ubuntu 命令行下格式化U盘,磁盘分区
命令行格式化磁盘一般是:先卸载,后格式化. 先说格式化U盘的方法,格式化磁盘某个分区是同样的道理. 一般情况下U盘会挂载在/meida/<username>/<disk>目录下 ...
- Ubuntu命令行下缩小磁盘镜像img文件尺寸
要解决的问题 一个固件包里的system.img, 尺寸是1GB, 里面的内容只有470MB, 在设备上写入的时候报超出大小了, 所以想把这个img调整为512MB 网上查了很多, 没有一个好用的, ...
- UBUNTU命令行下进程查看-终止
ps ax 显示当前系统进程的列表 ps aux 显示当前系统进程详细列表以及进程用户 如果输出过长,可能添加管道命令 less 如 ps ax|less 查看具体进程,使用 grep命令如 ...
- ubuntu 命令行下查看网页 w3m
w3m localhost/index.php
随机推荐
- salesforce零基础学习(八十五)streaming api 简单使用(接近实时获取你需要跟踪的数据的更新消息状态)
Streaming API参考链接: https://trailhead.salesforce.com/en/modules/api_basics/units/api_basics_streaming ...
- [转]sysctl -P 报错解决办法
问题症状 修改 linux 内核文件 #vi /etc/sysctl.conf后执行sysctl -P 报错 error: "net.bridge.bridge-nf-call-ip6ta ...
- python 闭包初识
def func_100(val): passline = 60 if val >= passline: print('pass') else: print('failed') def func ...
- JavaScript之图片懒加载的实现
图片懒加载指的是在浏览过程中随着需要才被加载出来,例如某宝上面浏览商品时,会伴随很多的图片,如果一次全部加载出来的话,显然资源有些浪费,并且加载速度也会相对降低,那么懒加载的实现很重要.即随着浏览翻阅 ...
- Request和Response
1 简介 web服务器收到客户端的http请求,会针对每一个请求,分别创建一个用于代表请求的request对象和代表响应的response对象. request和response对象既然代表请求和响应 ...
- Using $this when not in object context in
错误信息:$this引用没有上下文 原因:在PHP5中,static声明的静态方法里不可以使用$this 需要使用self来引用当前类中的方法或是变量. 引用的方法里不可以带$this(示例代码中为g ...
- input标签(待填坑)
input标签几种属性值 button:用作定义按钮 checkbox:定义复选框 file:供文件上传 hidden:定义隐藏的输入字段 image:图像形式的提交按钮 password:密码字段 ...
- sed,n,N,d,D,p,P,h,H,g,G,x,解析
原文地址 这篇文章主要是我参考命令的,直接复制粘贴,有问题请拍砖 A. sed执行模板=sed '模式{命令1;命令2}' 即逐行读入模式空间,执行命令,最后输出打印出来 B. p打印当前模式空间所有 ...
- mysql SQL语法总结
mysql主键操作 删除表主键: alter table student drop primary key; 增加表主键: alter table student add primary key(id ...
- poj2479 最大子段和
题意:给定一个数列.求出数列中不相交的两个子段和,要求和最大 解题思路:对每一个i来说,求出[0-i-1]的最大子段和以及[i-n-1]的最大子段和,再加起来,求出最大的一个.[0-i-1]的最大子段 ...