我是java新手,不言而喻。我正在使用IntelliJ。我偶然发现了一个我不明白的问题。我做了一个简化的程序来说明我的问题。它只检查数字是否在数组中。
import org.apache.commons.lang.ArrayUtils;
public class Test {
public static void main(String[] args) {
int[] list = new int[]{1,2,3};
Boolean help = ArrayUtils.contains(list, 3);
System.out.println(help);
}
}
(ctrl + shift + f10)运行良好并返回true,但是当我去尝试编译时:
E:\ ... \ W1> javac test.java
我得到了:
test.java:1: error: package org.apache.commons.lang does not exist
import org.apache.commons.lang.ArrayUtils;
^
test.java:7: error: cannot find symbol
Boolean help = ArrayUtils.contains(list, 3);
^
symbol: variable ArrayUtils
location: class test
2 errors
我已经下载了commons-lang-2.6并将该文件夹标记为我的程序所在模块的库。我甚至已将该文件夹添加到CLASSPATH中。任何建议如何解决它和解释为什么发生这种情况将不胜感激。
答案 0 :(得分:0)
您的IntelliJ使用不同的类路径来编译(和运行)您的程序,而不是命令行调用。您配置为依赖项的任何内容都必须添加到javac
调用中。
更好的是:创建一个Maven或Gradle项目(IntelliJ有足够的支持)并使用它来编译项目。 IntelliJ将使用Maven配置,并在命令行上调用mvn package
来编译和测试并打包所有内容。
答案 1 :(得分:0)
IntelliJ
以更复杂的方式编译您的应用程序 - 它将该库添加到类路径中。
为什么你的程序会编译?您的尝试与将该数组存储在计算机上的随机目录中有何不同?
如果您真的想使用命令行进行编译只是为了看它是否有效,请将此jar添加到您的test
类所在的文件夹中。请将其重命名为Test
。您可以使用-cp
标记来指出它。
对于未来,您应该学习Maven
- 它解决了构建应用程序时的许多问题。
答案 2 :(得分:0)
从solution获取apache commons jar
按照此处提及的步骤进行操作:http://www.java2s.com/Code/Jar/a/Downloadapachecommonsjar.htm
javac将创建.class文件,使用$ java
运行它