标签: classpath

制作java包

我的Java类组织变得有点乱,所以我正在讨论我在Java学习中跳过的东西:类路径.我无法安静地得到心爱的类来编译我为他们创建的包.这是我的文件夹层次结构:

.
com/
    david/
        Greet.java

        greeter/
            SayHello.java
            SayGoodbye.java
Run Code Online (Sandbox Code Playgroud)

SayHello的构造函数只打印"hello"和SayGoodbye的打印"Goodbye",而Greet的main方法只创建了这两个对象.在SayHello的顶部是包com.david.greeter; 与SayGoodbye和Greet相同的是包com.david;

在greeter文件夹中,我能够编译两个java文件但是如果我转到当前目录(保存com的目录)并执行javac -cp"com.david.greeter.*"com/david/Greet.java它说它找不到类以及说包com.david.greeter不存在.我也试过手动设置$ CLASSPATH.

我在这里结束了,Stackoverflow(正如我在这里发布的那样).你们中的任何人都知道我做错了什么吗?

java classpath

2
推荐指数
1
解决办法
356
查看次数

尽管 jar 在类路径上,但 Ant -verbose 失败并显示“包不存在”

我有以下代码

package myPackage;

import org.neo4j.graphdb;
import org.neo4j.kernel.EmbeddedGraphDatabase;

public class dbServlet extends HttpServlet {

public void init() throws ServletException {
    // Start up the database here                                                      
    GraphDatabaseService graphDb = new EmbeddedGraphDatabase("var/base");

}

public void destroy() {
    graphDb.shutdown();

}
Run Code Online (Sandbox Code Playgroud)

和 build.xml 文件:

<project name="dbServlet" basedir="." default="compile">

  <property name="src.dir" value="src"/>
  <property name="lib.dir" value="lib"/>
  <property name="build.dir"  value="build"/>
  <property name="classes.dir"  value="${build.dir}/classes"/>
  <property name="jar.dir"  value="${build.dir}/jar"/>

  <path id="classpath">
    <fileset dir="${lib.dir}" includes="**/*.jar"/>
  </path>

    <target name="clean">
        <delete dir="${build.dir}"/>
    </target>

    <target name="compile">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
    </target>

</project> …
Run Code Online (Sandbox Code Playgroud)

java ant javac classpath package

2
推荐指数
1
解决办法
6347
查看次数

在tomcat Web应用程序的类路径中动态添加属性文件

我正在尝试将属性文件动态添加到类路径,如下所示

try {
    File fileToAdd = new File(FILE_PATH);
    URL u = fileToAdd.toURL();
    ClassLoader sysLoader = ClassLoader.getSystemClassLoader();
    if (sysLoader instanceof URLClassLoader) {
    sysLoader = (URLClassLoader) sysLoader;
    Class<URLClassLoader> sysLoaderClass = URLClassLoader.class;

    // use reflection to invoke the private addURL method
    Method method = sysLoaderClass.getDeclaredMethod("addURL",
        new Class[] { URL.class });
    method.setAccessible(true);
    method.invoke(sysLoader, new Object[] { u });
    }
} catch (Exception e) {
    logger.error(e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)

但是我在类路径中看不到该文件。当我使用检查

System.getProperty("java.class.path")
Run Code Online (Sandbox Code Playgroud)

我在此列表中看不到我的文件。我在这里想念什么吗?

java classpath java-ee

2
推荐指数
1
解决办法
3471
查看次数

使用gradle将jar添加到classpath

在gradle中,有没有办法引用外部罐子.我有一些外部罐子,坐在项目结构外的另一个文件夹中.有没有办法在build.gradle文件中添加对这些jar的引用,以便在编译过程中获取它们?

谢谢

编辑:

我使用allprojects任务修改了mu build.gradle,该任务具有以下"子任务(?)",如下所示:

repositories{
   flatDir name:'ExternalJars',dirs:'<path to the jars>'
   dependencies{
      compile: 'jarname:jarname:version'
   }
}
Run Code Online (Sandbox Code Playgroud)

这似乎使我的构建运行得很好.当我创建存储库并指定依赖项时,是否有人可以了解到底发生了什么?- 谢谢

compilation jar classpath gradle

2
推荐指数
1
解决办法
8556
查看次数

Java - 类路径问题

我有一个products.jar文件.里面有一个班级com.ClassA.项目的结构就像

products
    |--test
        |--com
            |--ClassA.java
        |--dependencies
            |---inputs.txt
Run Code Online (Sandbox Code Playgroud)

在Eclipse中,通过以下路径ClassA.java访问inputs.txt文件,它工作正常

private static final String PROPERTIES_FILE_PATH = "test/dependencies/inputs.txt";
Run Code Online (Sandbox Code Playgroud)

test package是在java构建路径 - > sources中

但是当我导出这个项目时products.jar,我发现在jar文件中没有test目录.有两种显示目录comdependencies在JAR文件的根目录.因此,当我尝试ClassA通过命令行执行(驻留在jar文件中)时,我收到以下异常:

JUnit version 4.8.2
java.io.FileNotFoundException: test/dependencies/inputs.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:137)
at java.io.FileInputStream.<init>(FileInputStream.java:96)
Run Code Online (Sandbox Code Playgroud)

因此,在发现test未在jar文件中导出dir 后,我将ClassA.java中文件的路径更改为dependencies/inputs.txt.它在eclipse中不起作用,但我认为它可以在jar中工作,因为jar文件在classpath中,dependencies文件夹在jar文件的根目录下,所以java启动器将能够找到dependencies文件夹然后inputs.txt文件.

但不幸的是它也没有用.

java resources classpath

2
推荐指数
1
解决办法
1635
查看次数

IntelliJ IDEA:如何在编译时使依赖库的源在类路径中可用?

如何使依赖库的源在编译时在类路径中可用?

我正在使用 IntelliJ IDEA 11。

当我将全局库添加到模块和工件时,IDE 永远不会复制源代码和 javadoc。这是有道理的,因为它们在运行时不需要。但是我在编译时需要它们。

有趣的是,如果我将依赖项添加为文件夹,IDEA会提供源代码。我想在这种情况下,它不会区分该文件夹中的内容。奇怪的。

想法?

java gwt classpath intellij-idea

2
推荐指数
1
解决办法
1353
查看次数

java manifest classpath与-classpath

我试图找出一个与可执行jar文件有关的奇怪问题:xyz.jar在清单文件中有一个类路径/并且依赖于abc.jar库.

不幸的是,xyz.jar中的清单类路径不正确.为了避免灾难,我正在更新要使用的执行命令:java -classpath path/abc.jar:etc而不是java -jar

问题是xyz.jar故障,除非abc.jar不在类路径上.当删除abc.jar时,程序正确执行,并且不会抛出任何异常.为什么?xyz.jar必须从其他地方拿起abc.jar.xyz.jar调用abc.jar中的方法.

-classpath应覆盖任何$ CLASSPATH设置.即使使用-classpath,java仍然可以查看清单类路径吗?

java jar classpath

2
推荐指数
1
解决办法
3667
查看次数

Java SPI - ServiceLoader - 向 APP 类路径添加多个 JAR

我在我的项目中实现这个逻辑时遇到问题。我正在使用 ServiceLoader,我不知道或者它是否可能,但我想将 JAR 动态添加到应用程序的某个已知目录中,以便应用程序可以在启动时加载它们。我唯一取得的成就是我知道如何创建可扩展的 ONE JAR(使用 META-INF/服务),因此我可以向这个 JAR 添加越来越多的提供者和类(实现)。JAR 像普通库一样包含在类路径中,因此应用程序知道它。我想要实现的目标:我不想扩展一个 jar 文件,但我想通过添加更多 jar 来扩展应用程序,例如带有提供程序(服务)的插件,但我不知道如何。

感谢帮助!

java jar classpath serviceloader

2
推荐指数
1
解决办法
2842
查看次数

将Web应用程序项目转换为maven项目,并将相应的.classpath文件转换为pom.xml

将简单的Web应用程序项目转换为maven项目后,是否可以将项目.classpath文件转换为pom.xml?因为如果我的项目使用了很多jar并且我想将它转换为maven,那么我将配置 - >转换为maven但是然后无法手动在pom.xml中添加所有jars依赖项.那么有没有任何工具来转换它.

maven-2 classpath pom.xml

2
推荐指数
1
解决办法
602
查看次数

Thread.currentThread().getContextClassLoader().getResourceAsStream()返回null

我的应用程序中有以下代码块;

InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(FilePath);
Run Code Online (Sandbox Code Playgroud)

这里'FilePath'是文件的绝对路径.

当我在正常模式下运行应用程序时,上面的代码在linux和windows中工作正常.(即:在命令提示符下)但是当我将应用程序作为Windows服务运行时,这不起作用.我将输入流作为'null'.

有人遇到过这样的问题吗?除了java类加载器之外,我找不到任何关于此的信息.这里我们使用"ContextClassLoader",它是正确使用的类加载器.

这有什么线索吗?

java windows-services classpath

2
推荐指数
1
解决办法
1万
查看次数