ubuntu命令行下java工程编辑与算法(第四版)环境配置

java
命令行
javac
java

在学习算法(第四版)中的实例时,因需要安装配套的java编译环境,可是在编译java文件的时候总是出各种错误,特在此总结一下。

ubuntu下java环境配置

由于网上教程比较多,而且也较全面,特此摆放一个链接,跟着此教程总就可以配置好oracle的java jdk,如果想更加省事,直接在命令行下键入java,会提示安装各种开源java jdk,只需要一个命令即可:

  1. sudo apt-get install xxxx //对应java版本 

algorithms(第四版)相对应的资料下载

相对应的算法jar包

相对应的算法数据

对应的github,熟悉java的人,可以通过eclipse或idea进行maven和gradle代码配置

算法这门课的配置流程

测试安装环境

跟着官方教程走,环境搭建一般没有问题,测试成功的一个实例

  1. forest@forest-E351:~/java/code$ javac -d . RandomSeq 

  2. forest@forest-E351:~/java/code$ java edu.princeton.cs.algs4.RandomSeq 5 100.0 200.0 

  3. //运行需要指定包名,否则无法运行,总是指出少主类 

  4. 168.00 

  5. 110.52 

  6. 152.05 

  7. 127.17 

  8. 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,其代码分别如下:
  1. package a.b; //所在目录/src/java/code/a/b 

  2. import c.d.T;  

  3. public class TestT {  

  4. public static void main(String[] args) {  

  5. T t = new T();  

  6. t.p();  

  7. }  

  8. }  

  9. package c.d;   //所在目录/src/java/code/tmp/c/d/ 

  10. public class T {  

  11. public void p(){  

  12. System.out.println("class:T");  

  13. }  

  14. }  

输入javac编译和java执行命令之后

  1. //命令输入钱各个文件所在位置 

  2. forest@forest-E351:~/java/code$ tree 



  3. ├── a 

  4. │   └── b 

  5. │   └── TestT.java 

  6. └── tmp 

  7. └── c 

  8. └── d 

  9. └── T.java 

  10. forest@forest-E351:~/java/code/a/b$ javac -classpath ../../tmp TestT.java  

  11. forest@forest-E351:~/java/code$ tree 



  12. ├── a 

  13. │   └── b 

  14. │   ├── TestT.class    //相对应的字节码生成 

  15. │   └── TestT.java 

  16. └── tmp 

  17. └── c 

  18. └── d 

  19. ├── T.class     //相对应的字节码 

  20. └── T.java 

  21. forest@forest-E351:~/java/code$ java -cp .:tmp a/b/TestT   

  22. //.本地文件夹,表示TestT字节码;tmp用于寻找T字节码;包也是代表目录,tmp不需要详细写成tmp/c/d 

  23. // a/b/TestT用于指定主函数程序 

  24. 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 编译脚本


  1. #!/bin/bash  


  2. # Get current position  

  3. TOP_DIR=$(pwd)  


  4. # Add all necessary jars  

  5. LIBPATH=lib/commons-codec-1.6.jar:lib/commons-logging-1.1.1.jar\ 

  6. :lib/httpclient-4.2.5.jar:lib/httpcore-4.2.4.jar\ 

  7. :lib/junit-4.4.jar:lib/libthrift-1.0.0.jar:lib/log4j-1.2.14.jar\ 

  8. :lib/servlet-api-2.5.jar:lib/slf4j-api-1.5.8.jar:lib/slf4j-log4j12-1.5.8.jar  


  9. #compile java file  

  10. # 编译生成的字节码放入本地目录下classes目录下 

  11. # $LIBPATH 表示DemoService.java所引用的jar包 

  12. #src/com/demo/DemoService.java 根据当前sh脚本所在目录找到所需要编译的程序 

  13. javac -cp $LIBPATH src/com/demo/DemoService.java -d ./classes/.  

  14. javac -cp $TOP_DIR/classes:$LIBPATH src/com/server/ServerImpl.java -d ./classes/.  

  15. javac -cp $TOP_DIR/classes:$LIBPATH src/com/server/Server.java -d ./classes/.  

  16. javac -cp $TOP_DIR/classes:$LIBPATH src/com/client/Client.java -d ./classes/. 

run.sh运行脚本


  1. #!/bin/bash  


  2. #Get client/server  

  3. SIDE=$1  


  4. # Get current position  

  5. TOP_DIR=$(pwd)  


  6. # Add all necessary jars  

  7. LIBPATH=lib/commons-codec-1.6.jar:lib/commons-logging-1.1.1.jar\ 

  8. :lib/httpclient-4.2.5.jar:lib/httpcore-4.2.4.jar\ 

  9. :lib/junit-4.4.jar:lib/libthrift-1.0.0.jar\ 

  10. :lib/log4j-1.2.14.jar:lib/servlet-api-2.5.jar\ 

  11. :lib/slf4j-api-1.5.8.jar:lib/slf4j-log4j12-1.5.8.jar  


  12. #run program  

  13. # 由于所引用的类的字节码都放在一个classes目录下,我们只需要引入一个目录即可 

  14. # $LIBPATH 引入本程序所需要的jar包 

  15. if [ $SIDE == "server" ];then  

  16. java -cp $TOP_DIR/classes:$LIBPATH com/server/Server  

  17. else  

  18. java -cp $TOP_DIR/classes:$LIBPATH com/client/Client  

  19. fi  

编译后的结构图:

ubuntu命令行下java工程编辑与算法(第四版)环境配置的更多相关文章

  1. Ubuntu 命令行下快速打开各类文件 分类: ubuntu shell 2014-11-18 20:06 210人阅读 评论(0) 收藏

    xdg-open 命令可以用来在Ubuntu下快速打开各类文件. 下面是从 manual 文档里截取的内容: 可以知道,该命令的功能是在图形界面下按照用户的平时习惯打开各类文件,甚至是链接. 这样,我 ...

  2. Ubuntu命令行下安装,卸载软件包的过程[转]

    一.Ubuntu中软件安装方法 1.APT方式 (1)普通安装:apt-get install softname1 softname2 …; (2)修复安装:apt-get -f install so ...

  3. 【转】Ubuntu命令行下安装、卸载、管理软件包的方法

    原文网址:http://oss.org.cn/html/47/n-67447.html 一.Ubuntu中软件安装方法 1.APT方式 (1)普通安装:apt-get install softname ...

  4. Ubuntu命令行下安装、卸载、管理软件包的方法

    一.Ubuntu中软件安装方法 1.APT方式 (1)普通安装:apt-get install softname1 softname2 -; (2)修复安装:apt-get -f install so ...

  5. 如何命令行编译Java工程

    在src下的包含Main的包下打开命令行,javac -classpath “路径到src,不到包下”  Main.java

  6. ubuntu 命令行下格式化U盘,磁盘分区

    命令行格式化磁盘一般是:先卸载,后格式化. 先说格式化U盘的方法,格式化磁盘某个分区是同样的道理. 一般情况下U盘会挂载在/meida/<username>/<disk>目录下 ...

  7. Ubuntu命令行下缩小磁盘镜像img文件尺寸

    要解决的问题 一个固件包里的system.img, 尺寸是1GB, 里面的内容只有470MB, 在设备上写入的时候报超出大小了, 所以想把这个img调整为512MB 网上查了很多, 没有一个好用的, ...

  8. UBUNTU命令行下进程查看-终止

    ps ax   显示当前系统进程的列表 ps aux 显示当前系统进程详细列表以及进程用户 如果输出过长,可能添加管道命令 less  如  ps ax|less 查看具体进程,使用 grep命令如  ...

  9. ubuntu 命令行下查看网页 w3m

    w3m localhost/index.php

随机推荐

  1. Oracle问题之ORA-01609、ORA-00362

    Oracle问题之ORA-01609: 日志 4 是线程 1 的当前日志 - 无法删除成员 Oracle问题之ORA-00362: 要求输入成员以组成组 4 中的有效日志文件

  2. PowerDesigner设置null约束

    在PDM的表属性的字段列表中每行最后的P,F,M中的M(Mandatory)打勾就可以了,这样在生成的SQL中会变成not NULL Mandatory:强制的,不知道是不是可以理解为必须赋值的

  3. Jmeter下载时Binaries和Source两类包的区别

    在下载Jmeter时,存在两种类型的下载包,分别为Binaries和Source: 一般开放原代码软件都会有两个版本发布: Source Distribution 和 Binary Distribut ...

  4. Django_上传图片和模版获取图片

    需求: 在Django中,上传图片,存入数据库中的文件的路径,而不是图片本身,也就是说,图片等数据静态文件都可以放到第三方服务器上,我想在把图片保存到Django本地项目中,并可以通过Django自带 ...

  5. ajax请求返回乱码

    1,web.xml中有如下配置: <!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</filter-na ...

  6. myeclipse环境搭建

    公司来了几个新人,老是在教他们环境搭建这些,每次在帮他们调试代码的时候老是不厌其烦的看着他们坐等myeclipse编译了,校验了什么的,而且在编码的时候也不使用快捷键,然后我就只能默默的坐回去了.为了 ...

  7. 了解ViewFlipper工作机制

    平时我们在使用ViewFlipper的时候一方面感叹ViewFlipper的使用很简单,另一方面,我们时常感叹ViewFlipper给我们的接口方法太少,很多常用的效果都不好做,很难施展拳脚,这篇文章 ...

  8. C#中的out参数/ref参数/params可变参数

    out参数: out关键字 通过引用来传递参数,在定义方法和调用方法的时候都必须使用out关键字 简单来讲out可以用来返回多个参数类型. static void Main(string[] args ...

  9. python的pika模块操作rabbitmq

    上一篇博文rabbitmq的构架和原理,了解了rabbitmq的使用原理,接下来使用python的pika模块实现使用rabbitmq. 环境搭建 安装python,不会的请参考Linux安装配置py ...

  10. 同一台机器上多个tomcat启动造成的内存溢出问题的解决方法。

    加下面这句话就行了,我是WIN10+双tomcat+nginx(本地站点),无压力.在编译器的vm option里面加哦. -server -Xms512m -Xmx1024m -XX:PermSiz ...