【中大中级实训】Part1:vi,java,ant 和Junit 的自学报告
vim学习
vim安装
sudo apt-get install vim-gtk
vim指令学习
vim有命令模式,命令模式下有很多指令,用来方便我们来编辑代码,进行保存退出,插入删除等。以下是常用的指令表格:
命令 | 作用 |
---|---|
i | 在光标之前插入 |
:q | 退出 |
:w | 保存 |
:wq | 保存并退出 |
dd | 删除光标所在行 |
u | 撤销操作 |
gg | 跳到第一行 |
G | 跳到最后一行 |
java 学习
jdk安装
安装,终端Terminal下敲下命令:
sudo apt-get install default-jdk
配置检查,终端Terminal敲下命令:
java -version
如果看到java的版本信息则已经安装完成。
java:HelloWorld. java
新建helloworld.java代码文件:
public class helloworld {
public static void main(String args[]) {
System.out.println("Hello world!");
}
}
helloworld的编译运行,终端Terminal敲下命令:
javac helloworld.java
java helloworld
java小程序: calculator.java
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.*;
import java.awt.GridLayout;
import java.awt.event.*;
public class calculator extends JFrame{
private JLabel op1 = new JLabel("",JTextField.CENTER);
private JTextField num1 = new JTextField("12");
private JTextField num2 = new JTextField("2");
private JLabel op3 = new JLabel("",JTextField.CENTER);
public calculator(){
JFrame frame = new JFrame("Mycalculator");
frame.setLayout(new GridLayout(2,5,5,5));
//num1,num2 are the operands
num1.setHorizontalAlignment(JTextField.CENTER);
num2.setHorizontalAlignment(JTextField.CENTER);
JLabel op2 = new JLabel("=",JTextField.CENTER);
frame.add(num1);
frame.add(op1);
frame.add(num2);
frame.add(op2);
frame.add(op3);
//bu1~bu4 are the operators,bu5 is the equal operator
JButton bu1 = new JButton("+");
JButton bu2 = new JButton("-");
JButton bu3 = new JButton("*");
JButton bu4 = new JButton("/");
JButton bu5 = new JButton("OK");
frame.add(bu1);
frame.add(bu2);
frame.add(bu3);
frame.add(bu4);
frame.add(bu5);
//calculate part, add listener
bu1.addActionListener(new OperationButtonListener());
bu2.addActionListener(new OperationButtonListener());
bu3.addActionListener(new OperationButtonListener());
bu4.addActionListener(new OperationButtonListener());
bu5.addActionListener(new EqualButtonListener());
//set the attribute of frame
int width = 200;
int length = 400;
frame.setSize(length, width);
frame.setLocationRelativeTo(null); //set the frame to middle
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
//+-x/,operators' listener
private class OperationButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e){
JButton temp = (JButton)e.getSource();
op1.setText(temp.getLabel());
}
}
//=, equal listener
private class EqualButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e){
try{
//get two numbers
double number1 = Double.parseDouble(num1.getText());
double number2 = Double.parseDouble(num2.getText());
if(op1.getText().equals("+")){
op3.setText(number1+number2+"");
}
else if(op1.getText().equals("-")){
op3.setText(number1-number2+"");
}
else if(op1.getText().equals("*")){
op3.setText(number1*number2+"");
}
else if(op1.getText().equals("/")){
op3.setText(number1/number2+"");
}
}
//show the wrong details
catch(Exception err){
op3.setText("Wrong!");
}
}
}
public static void main(String[] args){
//run the calculator
new calculator();
}
}
ant学习
ant安装
安装下载,终端Terminal下:
sudo apt-get install ant
检查安装、配置是否成功,终端Terminal下:
ant
如果显示以下信息,则表明已安装 ant。
build.xml does not exist!
Build failed
ant使用
以简单的helloworld为例子。
我们创建的helloworld项目的文件结构如图:
使用ant进行管理,我们要在项目内创建一个build.xml文件,这里我们创建在项目根目录下。build.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloWorld" default="run" basedir=".">
<property name="src" value="src"/>
<property name="classes" value="classes"/>
<property name="lib" value="lib"/>
<target name="init">
<mkdir dir="${classes}"/>
<mkdir dir="${lib}"/>
</target>
<target name="clean">
<delete dir="${classes}"/>
<delete dir="${lib}"/>
</target>
<target name="jar" depends="compile">
<jar jarfile="${lib}/helloworld.jar">
<fileset dir="${classes}"/>
<manifest>
<attribute name="Main-class" value="helloworld"/>
</manifest>
</jar>
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${classes}"> <include name="helloworld.java"/>
</javac>
</target>
<target name="run" depends="compile">
<java classname="helloworld" classpath="${classes}"/>
</target>
<target name="test">
<javac srcdir="${src}" destdir="${classes}">
<include name="HelloWorldTest.java"/>
<include name="HelloWorld.java"/>
</javac>
<java classname="org.junit.runner.JUnitCore" >
<arg value="HelloWorldTest"/>
<classpath>
<pathelement path="${classes}"/>
<pathelement path="${src}/junit-4.9.jar"/>
</classpath>
</java>
</target>
</project>
一些常用的xml标签:
- property是设置目录地址,用来后文方便写路径。
- target 是ant 的每一个命令, 有命令名,target里面是写对于ant命令的实现。
- ant init命令是对文件结构的初始化,创建classes和lib文件夹目录。
- ant clean命令是清除部署,删除classes和lib文件夹。
- ant compile命令是编译操作,依赖于init操作,用来编译src文件夹里的helloworld.java,并将生成的helloworld.class放进classes文件夹内。
- ant run命令是运行helloworld.class文件操作,依赖于compile编译操作。
- ant jar命令是打包操作,依赖于compile编译操作,将生成的jar包放入lib文件夹目录。
- ant test命令是测试命令。
ant 编译运行java文件,在终端Terminal下:
ant run
Junit学习
Junit安装
从Junit官方下载网站https://github.com/KentBeck/junit/downloads上下载。
Junit环境变量配置
在终端下:
gedit ~/.bashrc
在文件末尾添加
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_91
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/home/adminstrator/Downloads/junit-4.9.jar:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
- 其中第一行JAVA_HOME的配置,指向自己的jdk文件,包管理安装的jdk,文件目录默认在/usr/lib/jvm中
- 第二行代码中的 /home/adminstrator/Downloads/junit-4.9.jar 要指向自己放置的junit-4.9.jar包,路径要写对。
- 添加完后,保存并退出
终端下添加下面这一句,使配置生效:
source ~/.bashrc
Junit的使用
以 helloworld.java 的 Junit 测试为例子。
在 src 文件夹下,重写helloworld.java文件:
public class HelloWorld {
public void main() {
System.out.println(helloWorld());
}
public static String helloWorld() {
return "Hello World!";
}
}
新建测试文件helloworldTest.java
import static org.junit.Assert;
import org.junit.Test;
public class TestHelloWorld {
@Test public void helloWorldNormal() {
String result = HelloWorld.helloWorld();
Assert.assertEquals("Hello World!", result);
}
}
先把junit-4.9.jar放进src文件夹内,然后在终端下:
javac -classpath .:../../junit-4.9.jar HelloWorldTest.java
java -classpath .:../../junit-4.9.jar -ea org.junit.runner.JUnitCore HelloWorldTest
如图显示即为成功。
ant管理Junit来测试helloworld
在build.xml添加如下ant test命令:
<target name="test">
<javac srcdir="${src}" destdir="${classes}">
<include name="HelloWorldTest.java"/>
<include name="HelloWorld.java"/>
</javac>
<java classname="org.junit.runner.JUnitCore" >
<arg value="HelloWorldTest"/>
<classpath>
<pathelement path="${classes}"/>
<pathelement path="${src}/junit-4.9.jar"/>
</classpath>
</java>
</target>
- 其作用就是利用ant来实现测试,不用在终端命令行敲下太多而只用ant test即可代替。
SonarQube学习
SonarQube是一个用于代码质量管理的开源平台,用于管理源代码的质量。
下面简单谈谈SonarQube的配置。
- 已安装Java环境
- 安装sonar和sonar-runner:将zip包解压。
- 设置 SONAR_HOME,SONAR_RUNNER_HOME 环境变量,并将 SONAR_RUNNER_HOME 加入 PATH 。
具体操作:
终端:
gedit ~/.bashrc
添加下面几条命令:
export SONAR_HOME=.../sonar-3.7.4/bin/linux-x86-64(…表示路径名)
export SONAR_RUNNER_HOME=.../sonar-runner-2.4
export PATH=$SONAR_RUUNER_HOME/BIN:$PATH
最后保存退出,在终端输入:
source ~/.bashrc
- 启动服务,在shell里输入 :
cd $SONAR_HOME
./sonar.sh start 启动服务
./sonar.sh stop 停止服务
./sonar.sh restart 重启服务
- 使用SonarQube Runner分析源代码
- 首先启动服务,然后在项目中创建 sonar-project.properties 配置文件,终端进入含该文件的目录下输入sonar-runner,打开localhost:9000查看即可。
- 注意每次使用完sonar记得关闭,进入启动目录,./sonar.sh stop
- java项目的project.properties 配置文件如下所示
#required metadata
#projectKey项目的唯一标识,不能重复
sonar.projectKey=myproject
sonar.projectName=myproject
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
sonar.modules=java-module,javascript-module,html-module
# Java module
java-module.sonar.projectName=Java Module
java-module.sonar.language=java
# .表示projectBaseDir指定的目录
java-module.sonar.sources=.
java-module.sonar.projectBaseDir=src
sonar.binaries=classes