标签: classpath

我收到"java.lang.ClassNotFoundException:com.google.gson.Gson"错误,即使它是在我的类路径中定义的

我正在尝试使用gson-1.6.jar解析一些JSON对象字符串.我将它放在与其他.jars相同的位置,并将它添加到我在eclipse中的buildpath中.

其他库在我添加它们时工作正常,我可以毫无问题地使用它们,但是当我尝试创建JSON对象时,我得到了名义错误.我已经通过这个错误查看了其他问题,但我找不到一个不涉及我尝试过的东西的解决方案或者一些无关的东西.

我使用以下方法将其导入顶部附近:

import com.google.gson.Gson;
Run Code Online (Sandbox Code Playgroud)

然后在静态函数中使用它,如下所示:

Gson g = new Gson();
Run Code Online (Sandbox Code Playgroud)

这是我的eclipse生成的类路径文件[Path]替换实际路径:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre6">
        <attributes>
            <attribute name="owner.project.facets" value="java"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v5.5">
        <attributes>
            <attribute name="owner.project.facets" value="jst.web"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
    <classpathentry kind="lib" path="[Path]/jabbabase-ws-jwsdp-client-2.4.7.jar"/>
    <classpathentry kind="lib" path="[Path]/log4j-1.2.16.jar"/>
    <classpathentry kind="lib" path="[Path]/gson-1.6.jar"/>
    <classpathentry kind="output" path="build/classes"/>
</classpath>
Run Code Online (Sandbox Code Playgroud)

以及我的构建路径窗口: 构建路径屏幕

我此时有点失落.我已经尝试了谷歌和帖子基本上只是说添加到您的构建路径.有人有什么想法吗?

编辑:更多信息

引用com.google.gson.GSON的代码由jsp用作bean.从jsp调用此函数,一旦执行该函数就会发生错误.该函数的第一行是:

Gson g = new Gson();
Run Code Online (Sandbox Code Playgroud)

它似乎编译和部署正常,但当它执行时,我收到错误消息.

谢谢

java eclipse jar classpath

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

加载类路径中jar内的spring应用程序上下文文件

我试图在我的java独立代码中使用ClassPathXmlApplicationContext来加载applicationContext.xml,它位于我的类路径中的jar文件中.

ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:**/applicationContext*.xml");
Run Code Online (Sandbox Code Playgroud)

applicationContext.xml条目如下,

 <bean id="myAdder" class="com.foo.bar.MyAdder">
        <property name="floatAdder" ref="floatAdder"/>        
    </bean>
Run Code Online (Sandbox Code Playgroud)

而且,当我尝试以这种方式加载bean时,我得到NoSuchBeanException.不能用这种方式加载bean吗?

jar文件作为maven依赖项添加到我的类路径中.当我在Eclipse中看到这个项目的Java Build Path时,我看到这个jar链接为M2_REPO /.../ ..

我假设我可以在jar文件中加载bean,因为jar就是这样的.我错过了什么吗?

谢谢,阿比

spring dependency-injection classpath

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

Maven没有为Eclipse项目添加类路径

我有一个maven项目,我正在研究Eclipse.

我使用maven eclipse:eclipse来生成类路径,但是......它永远不会在eclipse项目中添加类路径.我已经尝试了maven-eclipse-plugin,我已经尝试了M2Eclipse插件,但是无论我做什么都没关系,我无法让classpath条目开始工作.我有很多构建错误,甚至认为maven完美地构建了耳朵.

任何准则?

谢谢你的回答!

更新:这是我的根类路径:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="core/src/main/java"/>
    <classpathentry excluding="**" kind="src" output="target/classes" path="core/src/main/resources"/>
    <classpathentry kind="src" path="client/src/main/java"/>
    <classpathentry kind="src" path="client/src/main/resources"/>
    <classpathentry kind="src" path="junit_server/src/main/java"/>
    <classpathentry kind="src" path="initializer/src/main/java"/>
    <classpathentry kind="src" path="initializer/src/main/webapp"/>
    <classpathentry kind="src" path="site/src/main/webapp"/>
    <classpathentry kind="src" path="core/src/test/java"/>
    <classpathentry kind="src" path="core/src/test/resources"/>
    <classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry exported="true" kind="var" path="M2_REPO"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>
Run Code Online (Sandbox Code Playgroud)

UPDATE2:这是我的.project:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>coreisp_back</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.m2e.core.maven2Nature</nature>
        <nature>org.eclipse.jdt.core.javanature</nature>
    </natures>
</projectDescription>
Run Code Online (Sandbox Code Playgroud)

eclipse classpath maven

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

在Eclipse中,modulepath和classpath之间有什么区别?

在Eclipse中,modulepath和classpath之间有什么区别,我应该使用哪一个在lib文件夹中添加jar?为什么JRE系统库出现在模块路径中?

java eclipse classpath module-path

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

Ant + JUnit:NoClassDefFoundError

好的,我很沮丧!我已经狩猎了好几个小时,我仍然难过.

环境:WinXP,Eclipse Galileo 3.5(直接安装 - 无需额外插件).

所以,我有一个简单的JUnit测试.它从内部Eclipse JUnit运行配置运行良好.这个类没有依赖任何东西.为了尽可能缩小这个问题,它只包含:

@Test
public void testX() {
    assertEquals("1", new Integer(1).toString());
}
Run Code Online (Sandbox Code Playgroud)

到目前为止没有汗水.现在我想采取从Ant内部运行此测试用例的超级高级步骤(最终目标是与Hudson集成).

所以,我创建了一个build.xml:

<project name="Test" default="basic">
    <property name="default.target.dir" value="${basedir}/target" />
    <property name="test.report.dir" value="${default.target.dir}/test-reports" />

    <target name="basic">
        <mkdir dir="${test.report.dir}" />
        <junit fork="true" printSummary="true" showOutput="true">
            <formatter type="plain" />
            <classpath>
                <pathelement path="${basedir}/bin "/>
            </classpath>
            <batchtest fork="true" todir="${test.report.dir}" >
                <fileset dir="${basedir}/bin">
                    <include name="**/*Test.*" />
                </fileset>
            </batchtest>
        </junit>
    </target>
</project>
Run Code Online (Sandbox Code Playgroud)

$ {basedir}是工作空间中包含源,类和构建文件的Java项目名称.所有.java和build.xml都在$ {basedir}/src中..class文件位于$ {basedir}/bin中.

我已经通过Windows/Preferences/Ant/Runtime/Contributed Entries将eclipse-install-dir/plugins/org.junit4_4.5.0.v20090423/junit.jar添加到Ant运行时类路径中.ant-junit.jar在Ant Home Entries中.

那么,当我运行这个疯狂复杂的目标时会发生什么?我的报告文件包含:

Testsuite: com.xyz.test.RussianTest
Tests run: 1, Failures: 0, Errors: 1, Time …
Run Code Online (Sandbox Code Playgroud)

java ant junit classpath hamcrest

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

带有外部.jar的Java命令行

我使用.jar开发一个项目来重用代码.

所以我在.jar上命名为TOOLS.jar,我在文件HelloWorld.java中开发了一个简单的应用程序,它从TOOLS.jar引用我的包TOOLS

我用这个命令行编译:

javac -g -d C:\MyApp -cp TOOLS.jar HelloWorld.java
Run Code Online (Sandbox Code Playgroud)

它很成功,当我想执行我的应用程序时,我使用这个命令(我在C:\ MyApp文件夹中):

java -cp <path>\TOOLS.jar;. HelloWorld
Run Code Online (Sandbox Code Playgroud)

它很成功,但我的问题是:

当我有多个外部.jar时,如何执行我的应用程序?

我是否必须使用-cp选项在命令中添加每个?

有没有办法只生成一个二进制文件并执行它(与C程序一样的.exe)?

java executable jar classpath executable-jar

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

在运行时更新JAR

如果jar在JVM中运行,则可以卸载当前运行的Jar并将其从系统中删除.下载新版本并使用与最后一个Jar相同的名称重命名,然后初始化新Jar,在JVM中创建Jar的无缝更新.甚至可以指示JVM执行此操作吗?甚至可以在运行时更新Jar吗?

java jvm classpath classloader

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

如何从shell运行sbt主类作为普通的命令行程序?

如何从shell运行sbt应用程序,以便我可以将我的应用程序作为正常的命令行程序运行(就像直接通过scala但不必设置庞大的类路径一样)?

我知道我能做到:

echo hello | sbt 'run-main com.foo.MyMain3 arg1 arg2' > out.txt
Run Code Online (Sandbox Code Playgroud)

但是这(1)需要永远开始因为它启动sbt,(2)导致所有stdout和stderr转到stdout,并且(3)导致所有输出都用logger [info]或[error]进行修饰.

我查看了https://github.com/harrah/xsbt/wiki/Launcher,但它看起来太重了,因为它下载了依赖项并设置了一个新环境等等.我只想在现有的开发环境中运行这个应用程序.

到目前为止,我已经拼凑了我自己的脚本来构建一个类路径,你还可以做一些其他的事情,比如修改你的项目文件以获得sbt打印原始类路径,但我觉得必须有更好的方法.

scala classpath sbt

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

TestNG ERROR在类路径中找不到类

我正在尝试通过命令行运行testng,我在classpath中有以下内容:

  • testng jar,jar编译的测试用例文件和其他必需的jar.
  • testng.xml 指向层次结构中的适当类.

Testng不运行而是抛出:

[TestNG] [ERROR]  Cannot find class in classpath: (name of testcase file)
Run Code Online (Sandbox Code Playgroud)

我之前遇到过同样的问题而且我刚才补充道.

classpath它,它解决了这个问题.但这次它似乎没有解决它.任何解决方法?提前致谢.

java testng classpath

26
推荐指数
5
解决办法
19万
查看次数

使用classpath:在春天

关于classpath:春季期权,我有两个问题: -

1)是否classpath:搜索相对于指定文档的资源(如果是Web应用程序)?

假设我使用以下内容:

<bean class="mybean">
<property name="myresource" value="classpath:myfile.txt"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

/WEB-INF/classes/config/myconfig.xml下的myconfig.xml中.然后从哪里开始搜索?

2)如果直接定位资源而不是给出classpath:ie ,搜索会更快吗?

<bean class="mybean">
<property name="myresource" value="classpath:/WEB-INF/classes/myfolder/myfile.txt"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

代替

<bean class="mybean">
<property name="myresource" value="classpath:myfile.txt"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

谢谢...

spring classpath

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