java -cp 和 -classpath 一樣,是指定類運行所依賴其他類的路徑,通常是類庫,jar包之類,需要全路徑到jar包,window上分號“;”
分隔,linux上是分號“:”分隔。不支持通配符,需要列出所有jar包,用一點“.”代表當前路徑。
格式:
java -cp .;myClass.jar packname.mainclassname
表達式支持通配符,例如:
java -cp .;c:\classes01\myClass.jar;c:\classes02\*.jar packname.mainclassname
寫法:
java -cp .;myClass.jar packname.mainclassname
classpath中的jar文件能使用通配符,如果是多個jar文件,要一個一個地羅列出來,從某種意義上說jar文件也就是路徑。
要指定各個JAR文件具體的存放路徑,相同路徑有多個可使用通配符
java -cp .;c:\classes\myClass.jar;d:\classes\*.jar packname.mainclassname
java -jar myClass.jar
執行該命令時,會用到目錄META-INF\MANIFEST.MF文件,在該文件中,有一個叫Main-Class的參數,它說明了java -jar命令執行的類。
-cp 參數后面是類路徑,是指定給解釋器到哪里找到你的.class文件,
寫法:
java -cp .;myClass.jar packname.mainclassname
classpath中的jar文件能使用通配符,如果是多個jar文件,要一個一個地羅列出來,從某種意義上說jar文件也就是路徑。
要指定各個JAR文件具體的存放路徑,相同路徑有多個可使用通配符
java -cp .;c:\classes\myClass.jar;d:\classes\*.jar packname.mainclassname
例如,calss文件在D:\workspace\Test\src\sockettest 目錄下,然后class文件在sockettest 這個package下
進入這個目錄
D:\workspace\Test\src\sockettest>java -cp ../ sockettest.SocketServer1
如果是進入父目錄即 D:\workspace\Test\src
需要使用D:\workspace\Test\src>java -cp . sockettest.SocketServer1
命令執行
java -cp java的cp命令
用maven導出的包中,如果沒有在pom文件中將依賴包打進去,是沒有依賴包。
1.打包時指定了主類,可以直接用java -jar xxx.jar。
2.打包是沒有指定主類,可以用java -cp xxx.jar 主類名稱(絕對路徑)。
3.要引用其他的jar包,可以用java -classpath $CLASSPATH:xxxx.jar 主類名稱(絕對路徑)。其中 -classpath 指定需要引入的類。
下面基於pom和META-INF\MANIFEST.MF兩個文件的配置,進行了三種情況的測試:
pom.xml的build配置:
<build>
<!--<finalName>test-1.0-SNAPSHOT</finalName>-->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>test.core.Core</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<!--下面是為了使用 mvn package命令,如果不加則使用mvn assembly-->
<executions>
<execution>
<id>make-assemble</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
META-INF\MANIFEST.MF的內容:
Manifest-Version: 1.0
Main-Class: test.core.Core
1.pom中build指定mainClass 但是 META-INF\MANIFEST.MF文件中沒有指定Main-Class: test.core.Core
java -jar test-jar-with-dependencies.jar //執行成功
java -cp test-jar-with-dependencies.jar test.core.Core //執行失敗,提示jar中沒有主清單屬性
2.pom中build沒有指定mainClass 但是 META-INF\MANIFEST.MF文件中指定了Main-Class: test.core.Core
java -jar test-jar-with-dependencies.jar //執行失敗,提示jar中沒有主清單屬性
java -cp test-jar-with-dependencies.jar test.core.Core //執行成功
3.pom中build指定mainClass && META-INF\MANIFEST.MF文件中增加了Main-Class: test.core.Core
java -cp test-jar-with-dependencies.jar test.core.Core //執行成功
java -jar test-jar-with-dependencies.jar //執行成功
---------------------
1匹配驗證-驗證Email是否正確
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public
static
void
main(String[] args) {
// 要驗證的字符串
String str =
"service@xsoftlab.net"
;
// 郵箱驗證規則
String regEx =
"[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}"
;
// 編譯正則表達式
Pattern pattern = Pattern.compile(regEx);
// 忽略大小寫的寫法
// Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str);
// 字符串是否與正則表達式相匹配
boolean
rs = matcher.matches();
System.out.println(rs);
}
|
2在字符串中查詢字符或者字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public
static
void
main(String[] args) {
// 要驗證的字符串
String str =
"baike.xsoftlab.net"
;
// 正則表達式規則
String regEx =
"baike.*"
;
// 編譯正則表達式
Pattern pattern = Pattern.compile(regEx);
// 忽略大小寫的寫法
// Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str);
// 查找字符串中是否有匹配正則表達式的字符/字符串
boolean
rs = matcher.find();
System.out.println(rs);
}
|
3常用正則表達式
規則 | 正則表達式語法 |
一個或多個漢字 | ^[\u0391-\uFFE5]+$ |
郵政編碼 | ^[1-9]\d{5}$ |
QQ號碼 | ^[1-9]\d{4,10}$ |
郵箱 | ^[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\.){1,3}[a-zA-z\-]{1,}$ |
用戶名(字母開頭 + 數字/字母/下划線) | ^[A-Za-z][A-Za-z1-9_-]+$ |
手機號碼 | ^1[3|4|5|8][0-9]\d{8}$ |
URL | ^((http|https)://)?([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ |
18位身份證號 | ^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X|x)?$ |