标签: classpath

如何构建GNU Classpath和JamVM

我正在尝试构建GNU Classpath 0.98和JamVM 1.5.2.
在JamVM自述文件之后,我做了'配置; 使; 在jamVM上安装',它工作正常.

然后我将jamvm和Sun javac添加到路径中.
然后用GNU Classpath我这样做了:

./configure --enable-jni --disable-gtk-peer --disable-gconf-peer --disable-plugin
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

javac失败了(参见config.log)

在config.log,我看到javac找不到VMStackWalker(这是特定于jamvm)我将jamvm类添加到CLASSPATH,然后我收到此错误:

Java VM jamvm失败(请参阅config.log)

在config.log,我看到jamvm找不到java.lang.Class.

怎么了?!

gnu classpath jamvm

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

为什么我不在类路径中使用通配符?

在我的类路径中使用Java 6通配符有什么缺点吗?例如

C:> set CLASSPATH=.\lib\*
Run Code Online (Sandbox Code Playgroud)

我可以看到,如果有两个罐子都包含一个具有相同路径的类,那么使用通配符可能会导致难以追踪的结果.

但除此之外,还有什么需要注意的吗?

java classpath

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

在Android Building中修改BOOTCLASSPATH

这个问题与另一个问题有关.我重新编译了Android框架并生成了一个新图像.我需要在原始框架中添加一些类,并通过添加进入/ system/framework的新jar来实现.我修改了BOOTCLASSPATH以考虑这些新罐子.

构建映像并闪烁到设备不起作用.必须在此之前运行一些优化,但我不知道该过程是如何进行的.

在生成映像之前我应该​​执行哪些构建步骤,或者我有什么其他替代方法,以便可以从应用程序访问扩展框架类?

android build classpath firmware bootclasspath

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

从命令行将JAR依赖项与可执行JAR(ÜberJAR)捆绑在一起

我正在尝试从命令行创建一个可执行jar.JAR中的主类具有我已打包到另一个普通JAR文件中的依赖项.

我想将依赖项JAR与可执行JAR打包在一起,以便发送一个JAR文件.

我到目前为止尝试的是以下内容:

依赖项Hello.class文件具有模拟代码:

public class Hello {
    public String getHello() {
        return "Well hello there!!";
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用以下方法将类文件打包到hello.jar中:

jar cvfM hello.jar Hello.class
Run Code Online (Sandbox Code Playgroud)

该hello.jar内容现在是:

hello.jar -+- Hello.class
Run Code Online (Sandbox Code Playgroud)

现在我有主要类与模拟代码:

public class Main {
    public static void main(String[] args) {
        System.out.println(new Hello().getHello());
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,我创建一个清单文件manifest.txt,其中包含以下内容:

Main-Class: Main
Class-Path: hello.jar
Run Code Online (Sandbox Code Playgroud)

我现在使用以下方法创建可执行JAR:

jar cvfm main.jar manifest.txt Main.class hello.jar
Run Code Online (Sandbox Code Playgroud)

该main.jar文件内容是现在:

main.jar -+- Main.class
          |
          +- hello.jar
          |
          +- META-INF -+- MANIFEST.MF
Run Code Online (Sandbox Code Playgroud)

使用以下命令运行可执行JAR:

java -jar main.jar
Run Code Online (Sandbox Code Playgroud)

我得到Hello类依赖项的类加载器错误.我知道这是因为类加载器在与main.jar …

java jar classpath executable-jar

5
推荐指数
2
解决办法
4566
查看次数

在Junit测试中使用来自WEB-INF的i18n资源

我想我的类路径设置遇到了错误.

我想测试一个国际化的网络应用程序,其中的messagesource定义如下:

<bean id="messageSource"
  class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>/WEB-INF/i18n/errors</value>
            <value>/WEB-INF/i18n/messages</value>
            <value>/WEB-INF/i18n/links</value>
            <value>/WEB-INF/i18n/forms</value>
            <value>/WEB-INF/i18n/communication</value>
        </list>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

加载这些值在生产环境中完美运行.但是,在运行Junit Test时,它无法解析这些属性文件,因为它们不在类路径中.

但是,我希望它们不在类路径上,因为我可以利用我可以在属性文件中更改内容的功能,并立即反映在网站上: Since application servers typically cache all files loaded from the classpath, it is necessary to store resources somewhere else (for example, in the "WEB-INF" directory of a web app). Otherwise changes of files in the classpath will not be reflected in the application.

spring applicationContext位于那里:/src/main/resources/spring/applicationContext.xml 并使用这些注释加载到Junit测试中:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/spring/applicationContext.xml"})
Run Code Online (Sandbox Code Playgroud)

如何让Junit获取那些非类路径资源呢?属性文件已打开/src/main/webapp/WEB-INF/i18n/*

Junit:4.7.

春天:3.0.5.

junit spring classpath

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

如何在OSGi Bundle中创建/初始化Javassist ClassPool?

我在Eclipse中创建了一个Bundle,并在"Overview"选项卡中使用了"Launch the Framework"链接.我在我的bundle中创建了一个接口(TestService),以及应该为它生成代理的代码(在Helper中).我在Bundle的Activator中调用此代码,并得到:

Caused by: javassist.NotFoundException: com.test.services.TestService
at javassist.ClassPool.get(ClassPool.java:436)
at com.test.services.Helper.get(Helper.java:46)
Run Code Online (Sandbox Code Playgroud)

它会在第一个ClassPool.get()中抛出:

ClassPool pool = ClassPool.getDefault();
CtClass result = pool.get(TestService.class.getName());
...
Run Code Online (Sandbox Code Playgroud)

TestService是公共的,在同一个包中,而Bundle是Helper,它生成Exception.显然,仅仅执行"ClassPool.getDefault()"并不够好.那么我需要做什么才能使ClassPool看到Bundle中的类?我是否必须导入自己的包裹?

osgi classpath

5
推荐指数
2
解决办法
7940
查看次数

在Linux中的classpath上使用带有多个特定jar的javac(冒号后冒号不会扩展)

我正在尝试通过类似下面的命令编译一个使用两个jar文件(trove和apache commons集合)的java源文件

javac -cp ~/.m2/repository/gnu/trove/trove/3.0.0/trove-3.0.0.jar:~/git-workspace/grid/libs/commons-collections-3.2.1.jar $(find . -name TimeJavaCode.java)
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,公共代码没有被成功包含,并且在我使用commons库时出现编译错误.如果我颠倒了导入的顺序,那么在我使用trove时会出现编译错误.我已经尝试导出到变量以及单引号和双引号cp字符串无效(在这种情况下,没有导出成功,并且存在编译错误的trove和commons).

我已经看过以下的问题:

在java类路径中设置多个jar

使用多个.jar和javac

包括两个罐子的正确方法是什么?

java linux javac classpath

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

java"ClassNotFoundException"错误

我是java编程的新手,我收到了很多错误的"ClassNotFoundException"错误.

奇怪的是它编译得很好:

java -cp /usr/share/java/scribe-1.3.0.jar FacebookProg
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行它时,我收到以下错误:

steve@steve-ThinkPad-T61:~/facebook$ java  FacebookProg  
Exception in thread "main" java.lang.NoClassDefFoundError:
org/scribe/builder/ServiceBuilder  
    at FacebookProg.main(FacebookProg.java:8)  
Caused by: java.lang.ClassNotFoundException: org.scribe.builder.ServiceBuilder  
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)  
    at java.security.AccessController.doPrivileged(Native Method)  
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)  
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)  
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)  
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)  
    ... 1 more  
Run Code Online (Sandbox Code Playgroud)

我在网上查了一下,似乎java无法在运行时找到它能够在编译时找到的库.所以尝试了以下变化:

java -cp /usr/share/java/scribe-1.3.0.jar FacebookProg  
java -cp /usr/share/java/ FacebookProg  
export CLASSPATH="/usr/share/java"; java FacebookProf  
export CLASSPATH="/usr/share/java/usr/share/java/scribe-1.3.0.jar"; java FacebookProg  
Run Code Online (Sandbox Code Playgroud)

我检查了StackOverflow和google上的几个地方,仍然无法找出原因.我是java的新手,所以可能有一个简单的解决方案,但我找不到它.我在Ubuntu 11.04上使用Sun Java 1.6 64位.scribe-1.3.0.jar文件位于"/ usr/share/java"中,我相信它是放置java包的规范位置.

准系统代码在这里(如果它很重要):

import org.scribe.builder.*;
import org.scribe.builder.api.*;
import org.scribe.oauth.*;

public class FacebookProg {
    public static void main (String args[]) {
        OAuthService …
Run Code Online (Sandbox Code Playgroud)

java classpath scribe classnotfoundexception

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

如何在hadoop文件系统上设置Java程序的类路径

我想弄清楚如何设置引用HDFS的类路径?我找不到任何参考.

 java -cp "how to reference to HDFS?" com.MyProgram 
Run Code Online (Sandbox Code Playgroud)

如果我不能引用hadoop文件系统,那么我必须在每个hadoop机器上复制$ HADOOP_HOME下的所有引用的第三方库/ jar ...但我想通过将文件放到hadoop文件系统来避免这种情况.这可能吗?

用于程序运行的示例hadoop命令行(我的期望是这样的,也许我错了):

hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-streaming-1.0.3.jar -input inputfileDir -output outputfileDir -mapper /home/nanshi/myprog.java -reducer NONE -file /home/nanshi/myprog.java
Run Code Online (Sandbox Code Playgroud)

但是,在上面的命令行中,我如何添加java classpath?喜欢-cp"/home/nanshi/wiki/Lucene/lib/lucene-core-3.6.0.jar:/home/nanshi/Lucene/bin"

java hadoop classpath

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

如何可靠地找到Java的rt.jar或等效文件?

如何可靠地找到包含Java引导程序类(rt.jar或等效类)的jar?我正在使用下面的代码,但是我发现它JAVA_HOME用于引用JDK而不是JRE,并且如果未安装JDK将会完全失败。

def findJRE():
    try:
        home = os.environ['JAVA_HOME']
        path = os.path.join(home, 'jre', 'lib', 'rt.jar')
        if os.path.isfile(path):
            return path

        #For macs
        path = os.path.join(home, 'bundle', 'Classes', 'classes.jar')
        if os.path.isfile(path):
            return path
    except Exception as e:
        pass
Run Code Online (Sandbox Code Playgroud)

python java classpath

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