public
static
void
main
(
String
[
]
args
)
{
Set
<
String
>
set
=
new
HashSet
<
>
(
)
;
set
.
add
(
"jack"
)
;
System
.
out
.
println
(
set
)
;
System
.
out
.
println
(
jarTest
(
"one"
)
)
;
private
static
String
jarTest
(
String a
)
{
if
(
StringUtils
.
isBlank
(
a
)
)
{
return
null
;
return
a
.
toUpperCase
(
)
;
使用 javac 命令编译:
这里指定了 classpath,不然编译器没法找到 StringUtils 类。
在 test 目录下:
这什么鬼,居然报
找不到或无法加载主类
。我多方查询资料也无果,依赖的 jar 包目录指定了:
~/test/jar/commons-lang3-3.4.jar
,编译后的 class 文件目录也指定了:
~/test
。
经过一轮测试,原来是目录指定的有问题:
当我将
~/test
换成绝对路径:
/Users/jackchou/test
就正常了,原来 classpath 指定的目录中,第二个目录不能是使用
~
,第一个目录可以。为了避免错误,classpath 都指定绝对路径
java -classpath /Users/jackchou/test/jar/commons-lang3-3.4.jar:/Users/jackchou/test com.jiaobuchong.ClassPathDemo
,可以在任何目录运行这个 Java 类。
上面这个命令要正常运行的话,需要保证 java 命令的执行是在所编译的类的目录中。
默认的 classpath 是当前目录,当自定义 classpath 的时候就会把默认的给覆盖掉,要在 classpath 中加入当前目录,直接用
.
就行。
参考:
Setting the Class Path
classpath的理解及其使用方式
关于JAVA项目中CLASSPATH路径详解
JAVA和JAVAC 命令行;java 带有包名编译并运行,附带外部依赖jar包运行
我使用的 Java 版本是:java version "1.8.0_191"代码目录结构:ClassPathDemo.java:package com.jiaobuchong;import java.util.HashSet;import java.util.Set;import org.apache.commons.lang3.StringUtils;public cla...
前言:虽然学习
Java
语言约有两年多,但在最近需要使用
命令
行工具编译并运行
Java
程序时,还是
报错
了。花费了一些时间,解决了该问题,发现解决方法在初学
Java
时使用过。一则,为了避免以后再出现同样的问题而浪费不必要的时间;二则,作为使用该语言的程序员,对于该语言的一些基本问题,应该有清晰的理解和认识;三则,网上的一些解决方案,不够完备。有的没有解释问题原因,直接给出答案;有的,未列举出某些常见情况的解决方案。因此,写此文章,让读者可以举一反三,深入理解问题。
一、 问题分析
找
不到
或
无法
加载
主类
,主要原因有
2.可能是因为你的
java
文件带了package包,但是你还在
java
文件所在目录运行:返回包的前一目录进行运行;
小编就是因为
java
文件里带了package word.project2_0;导致的错误。。。
错误原因是:我们在包里运行文...
一般情况下,我们都使用工具进行代码的编辑和调试,例如eclipse 、Manven、Android Studio、sublime、vim、notepad、记事本等。
当我们用eclipse android studio等创建的project和
java
类文件,都是有包名的,用工具正常编译和运行,但此时切换到
命令
行执行的时候:
java
c xxx.
java
java
xxx
的时候 极有可能出现
找
不到
或
热爱编程的大忽悠:
面试题:多线程按顺序输出
热爱编程的大忽悠: