我有一个使用第三方库的groovy脚本.每次我打开应用程序并尝试运行我的脚本时,我都必须导入适当的库.
我希望能够打开GroovyConsole并运行我的应用程序,而无需导入库.
我以前这样做过:
CLASSPATH = ":/家庭/ phoenies/jdk1.6.0_17/lib中/的tools.jar:/home/phoenies/jdk1.6.0_17/lib/dt.jar"
但是今天一篇文章说我应该这样做:
CLASSPATH = ":/家庭/ phoenies/jdk1.6.0_17/lib目录"
如果我这样做,它会搜索lib中的所有jar文件吗?所以它可能是一个更短的方式?
我正在尝试重新编译我一直在处理的项目,并在尝试加载属性文件时不断收到错误消息:
The system cannot find the path specified.
我想这与类路径有关.但是我在Properties-> Java build path-> Libraries(external class)中添加了文件的路径.我还检查了eclipse生成的.classpath文件,路径确实存在!
为什么Eclipse不是正确的路径?
我有一个java项目.来自其他人的Eclipse项目的工作文件夹(我认为这是一个Repast Simphony项目).
在我的eclipse中,我创建了一个新的Java项目并告诉它使用现有的代码.所以它似乎带来了所有的代码.
但是在加载项目后我收到此错误:
Project 'My Project' is missing required Java project: 'Weka 3-7'
Run Code Online (Sandbox Code Playgroud)
它有一个包含以下内容的.classpath文件:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" kind="src" path="/Weka-3-7"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试过的:
我安装了Weka 3-7.然后我更新了.classpath文件以说出以下内容并重新加载项目.
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" kind="src" path="C|/Program Files/Weka-3-7"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Run Code Online (Sandbox Code Playgroud)
但现在我收到错误消息:
Project 'My Project' is missing required source folder: 'C|/Program Files/Weka-3-7'
Run Code Online (Sandbox Code Playgroud)
请帮忙.我被卡住了.
我看到Eclipse我可以定义用户库 - 使类路径设置更容易(也可能出于其他原因).
问题是,这些库只在工作区中可用,如果我希望其他人使用同一个项目 - 我需要导出我的用户库,他们需要导入它.
项目级别有这样的功能吗?我基本上需要一个' classpath group ' - 可以做到吗?
如果没有,导入项目时是否有自动导入用户库到工作区的方法?
我正在使用Eclipse 3.6.
我在pom.xml的依赖项部分添加了以下内容:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4.1</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但是当我添加第一行的"快速入门指南"(http://hc.apache.org/httpcomponents-client-4.4.x/quickstart.html)时:
CloseableHttpClient httpclient = HttpClients.createDefault();
Run Code Online (Sandbox Code Playgroud)
IntelliJ IDEA突出显示"HttpClients"并告诉我:
无法解析符号'HttpClients'
看起来我配置有误.究竟出了什么问题?请告知如何在项目中添加对HttpClients的支持?
谢谢!
PS学到了一点,看起来""对于这种情况来说是多余的和错误的,我删除它但是没有帮助:仍然是不可编译的.
编辑:如果我将光标放到'HttpClients'并点击"Alt-enter"弹出窗口不包含任何要导入的类.看截图:

java classpath intellij-idea maven apache-commons-httpclient
示例:
对于日志记录,我的代码使用log4j.但我的代码依赖的其他罐子,slf4j而是使用.因此两个罐子必须在构建路径中.不幸的是,我的代码slf4j现在可以通过上下文辅助或其他一些开发人员更改直接使用(依赖).我想任何使用slf4j显示为错误,但我的应用程序(和测试)在运行时仍然需要在类路径中.
解释:
我想知道这是否可能在eclipse中.这种情况经常发生在我身上.我将有一个大型项目,它使用了很多第三方库.当然,这些第三方罐子也有自己的依赖关系.因此,我必须在类路径(eclipse中的"构建路径")中包含所有依赖项,以便应用程序及其测试进行编译和运行(从eclipse中).
但我不希望我的代码使用所有这些jar,只是我自己决定的几个直接依赖.因此,如果我的代码意外地使用了依赖项的依赖项,我希望它显示为编译错误.理想情况下,没有找到类,但任何错误都可以.
我知道我可以在eclipse之外运行时手动配置类路径,甚至在eclipse中我可以修改我正在运行的特定类的类路径(在运行配置中),但是如果你运行了很多单独的测试用例,这是不可管理的,或者有很多main()类.
自Java 1.5以来,javac一直在寻找第三方罐子的清单来寻找其他罐子.这会导致许多不良副作用:
-Xlint:-path)所以我想知道是否有人知道魔术调用来禁用它.假设Sun没有给我们带来另一个我们不想要的功能,一旦我们拥有它就无法关闭.
每当在以感叹号结尾的目录中运行可执行jar时,getResourceAsStream -method都返回null.
对于以下示例,我有一个Eclipse项目具有以下目录结构:
src\ (Source Folder)
main\ (Package)
Main.java
res\ (Source Folder)
images\
Logo.png
Run Code Online (Sandbox Code Playgroud)
我正在阅读Logo.png如下:
public static void main(String[] args) throws IOException {
try (InputStream is = Main.class.getClassLoader().getResourceAsStream("images/Logo.png")) {
Image image = ImageIO.read(is);
System.out.println(image);
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅2个测试用例的附件.首先,可执行jar从目录"D:\ test123!@#"启动而没有任何问题.其次,可执行jar从目录"D:\ test123!@#!!!"启动,有问题.
是否不支持以感叹号结尾的目录?代码错了吗?
提前致谢.

在Glassfish 4.1中,我正在运行一个企业应用程序。我已经将maven用于耳朵包装。依赖项jar保留在ear / lib文件夹中。在这些jar中,有一些jar的清单中有Class-Path条目。
以batik-js-1.7.jar其中Class-Path: xbean.jar的清单条目为例,其中没有版本字符串。该xmlbeans-2.3.0.jar是在lib文件夹。由于此jar文件的文件名中包含版本字符串,因此Glassfish会抛出警告消息:
PWC6351: In TLD scanning, the supplied resource file:<path_to_server_ear>/lib/xbean.jar does not exist。
现在,如果我通过的配置在打包耳朵时移除了版本字符串<fileNameMapping>no-version</fileNameMapping>,maven-ear-plugin则对于此jar而言,警告消息不再出现,但对其他Manifest的Class-Path条目具有带有版本字符串的jar名称的jar造成了同样的警告。
如何解决此警告消息问题?无论如何,在进行Maven打包时是否要从清单中删除类路径条目,或者告诉Glassfish不要扫描清单中的类路径?