标签: classpath

当jar明显拥有它时,Java NoClassDefFoundError

我有一个简单的类从另一个jar导入另一个类.一切都很好,但试图运行它...

$ jar tvf ../../pig-2.1.jar  | grep TupleFact
1641 Mon Feb 02 17:56:32 UTC 2009 org/apache/pig/data/DefaultTupleFactory.class
2289 Mon Feb 02 17:56:30 UTC 2009 org/apache/pig/data/TupleFactory.class
$ javac ../src/Convert.java -classpath `echo ../lib/* ../../lib/* | sed 's/ /:/g'`
$ java Convert -classpath `echo ../lib/* ../../lib/* | sed 's/ /:/g'`
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/pig/data/TupleFactory
        at Convert.<clinit>(Convert.java:31)
Caused by: java.lang.ClassNotFoundException: org.apache.pig.data.TupleFactory
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        ... 1 more
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?你是如何开始调试的?

java classpath noclassdeffounderror

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

如何告诉javac如何找到imageio-classes?

我是java开发的新手,我只想在构建系统中使用javac.我正在使用java为其他人编写的程序添加一个功能,特别是涉及GeoTiff图像.

我在网上发现了一个我想要使用的课程,但是我无法建立课程,无论我做什么,我都会得到这样的信息:

javac GeoTiffIIOMetadataAdapter.java
GeoTiffIIOMetadataAdapter.java:11: package com.sun.media.imageio.plugins.tiff does not exist
 import com.sun.media.imageio.plugins.tiff.GeoTIFFTagSet;
Run Code Online (Sandbox Code Playgroud)

我在RHEL5上,所以我安装了我认为需要的软件包,jai-imageio-core.x86_64. 但问题仍然存在.我认为我没有正确设置一些变量(比如-sourcepath或者其他东西).我将不胜感激任何帮助.

java javac classpath

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

Java类文件不在类路径上

我已经尝试在eclipse中打开类文件,我已经从我导入到项目中的jar中复制了粘贴,并且我收到了第一个错误:

org.eclipse.core.runtime.CoreException:类文件不在类路径中.

显然我已经将类文件错误地包含在我的项目中.我需要使用这个类文件来访问Java applet.建议请

java eclipse applet jar classpath

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

无法安装常见的编解码器jar文件

我已经下载了common.codec二进制jar文件.现在我想使用这个类org.apache.commons.codec.binary.Base64.但这个文件夹包含四个jar文件,即common.codec-1.7.jar,commons-codec-1.7-javadoc.jar,commons-codec-1.7-sources,commons-codec-1.7-tests,commons-codec-1a.7-test-sources.现在我应该在课程路径中提到哪条路径?我尝试使用所有jar文件路径并在我的程序中导入但失败了.请告诉我在哪里放置这个下载的jar文件以及如何在我的代码中使用它.

java jar classpath apache-commons-codec

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

groovy 二进制版本 vs groovy-all-jar

当我想从http://groovy-lang.org/download.html下载 groovy 时,我得到了“二进制版本”。这意味着我有一个带有libbinembeddable文件夹的目录结构。在bin文件夹中有一个groovyshell 脚本,让我可以执行我自己的 groovy 源文件。此groovyshell 脚本使用lib目录中的 jars 。但是,我希望它使用embeddable目录中groovy-all-jar 中的 jars 。原因是,我不希望jar在我的类路径中的目录中的所有 jars,因为我需要使用不同的版本。

如何groovy使用 groovy-all-jar制作shell 脚本?

shell groovy jar classpath

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

使用命令行工具列出当前类路径中的可用类

我需要使用默认的 JRE/JDK 命令行工具检查当前目录中是否有特定的类可用。

我可以构建自己的类来列出它或检查是否可以从当前目录和当前 CLASSPATH 环境变量中访问特定类,但是此选项不可用,因为我需要检查特定类名是否在受保护的生产中可用环境(只读)。

java linux classpath

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

Bash编译Java类和JAR

我正在尝试编写一个脚本,它将自动执行我经常执行的一些任务.我的文件的文件夹结构是这样的:

./
sampleScript.sh
src/SampleProgram.java
Run Code Online (Sandbox Code Playgroud)

除此之外,我的Java程序依赖于ojdbc6.jar驻留的文件~/sampleFolder/lib.

我试图在我的脚本中编译和运行Java程序,如下所示:

javac -cp "$CLASSPATH:~/sampleFolder/lib/ojdbc6.jar:./src" src/SampleProgram.java
java -cp "$CLASSPATH:~/sampleFolder/lib/ojdbc6.jar:./src" SampleProgram
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用.它似乎在我的程序中检查ojdbc6.jar依赖项的步骤失败.-cp基于此文件夹结构分配我的正确方法是什么?

java unix bash javac classpath

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

如何在 Gradle 任务中使用应用程序类路径

这个想法很简单,我想直接在我的构建脚本中访问项目类。

我第一次尝试:

apply plugin: 'java'

tasks.create(name: 'randomTask', type: SourceTask) {
    source.each {
        println it
    }
}
Run Code Online (Sandbox Code Playgroud)

遗憾的是得到了零个文件。

然后我决定尝试 compileJava:

apply plugin: 'java'

compileJava {
    source.each {
        println it
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然我确实得到了一个将被编译的文件列表,但它并不是我真正需要的。我想获取文件的 Class 对象。

因此,例如,如果我有com.example.SomeClass,我希望得到Class<com.example.SomeClass>这样我可以在这些类上使用反射。

这是我想要的一个非工作示例:

apply plugin: 'java'

tasks.create(name: 'randomTask', type: SomeMagicalType) {
    UMLBuilder builder = UMLBuilder.builder()
    classes.each { clazz ->
        clazz.methods.each { method ->
            builder.addMethod(method)
        }
    }
    builder.build().writeToFile(file('out/application.uml'))
}
Run Code Online (Sandbox Code Playgroud)

PS:我使用的是 Gradle 2.5 和 Java 8

java groovy classpath gradle

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

如何允许 gradle 插件访问项目依赖项中的类

我正在编写一个 gradle 插件来json-schema在我的项目中生成一个for beans。我的目标是在构建过程中生成和发布模式,这样我就不需要手动更新它。

目前,我传递project.compileJava.inputs.files给我的任务并使用它来构建一个URLClassLoader. 然后我将这些类传递给模式生成器

为了确保正确生成 json 模式,我想使用ObjectMapper来自目标应用程序的 。不幸的是,我在该模块的深处ObjectMapper添加了 jackson Hibernate5Module.,它尝试检查我的类是否可以分配给 aHibernateProxy,并且因为HibernateProxy它加载了 Gradle 的类加载器,并且我的类加载了URLClassLoader所有内容都会爆炸。

我可以删除 Hibernate 模块,但这仍然会在其他类似情况下触发该错误,并且它使我的插件不易分发。所以我需要一种在运行时向 gradle 的类路径或默认类加载器添加新条目的方法。

作为参考,以下是相关代码片段:

目标项目的 build.gradle

jsonSchema {
    classpath = project.compileJava.inputs.files
}
Run Code Online (Sandbox Code Playgroud)

公共类 WriteJsonSchema 扩展了 DefaultTask

@TaskAction
public void write() throws ClassNotFoundException, IOException {
    ObjectMapper mapper = new ObjectMapper();

    mapper.registerModule(new Hibernate5Module());
    mapper.registerModule(new Jdk8Module());
    mapper.registerModule(new JavaTimeModule());

    mapper.configure(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS, false);
    mapper.configure(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS, false);

    Set<File> files = getClasspath().getFiles();
    List<URL> …
Run Code Online (Sandbox Code Playgroud)

java classpath jsonschema gradle

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

如何在 Tomcat 9 中创建自定义类路径?

我们计划将 tomcat 服务器(我们当前使用的版本是 7)迁移到版本 9,目前我们正在使用 VirtualWebAppLoader 类来创建自定义类路径,即从外部文件夹加载 jars。但是在 Tomcat 9 中,这个加载器类不再可用。如何在 tomcat 9 中实现这一目标?

tomcat classpath classloader tomcat7

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