我正在尝试构建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.
怎么了?!
在我的类路径中使用Java 6通配符有什么缺点吗?例如
C:> set CLASSPATH=.\lib\*
Run Code Online (Sandbox Code Playgroud)
我可以看到,如果有两个罐子都包含一个具有相同路径的类,那么使用通配符可能会导致难以追踪的结果.
但除此之外,还有什么需要注意的吗?
这个问题与另一个问题有关.我重新编译了Android框架并生成了一个新图像.我需要在原始框架中添加一些类,并通过添加进入/ system/framework的新jar来实现.我修改了BOOTCLASSPATH以考虑这些新罐子.
构建映像并闪烁到设备不起作用.必须在此之前运行一些优化,但我不知道该过程是如何进行的.
在生成映像之前我应该执行哪些构建步骤,或者我有什么其他替代方法,以便可以从应用程序访问扩展框架类?
我正在尝试从命令行创建一个可执行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 …
我想我的类路径设置遇到了错误.
我想测试一个国际化的网络应用程序,其中的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.
我在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中的类?我是否必须导入自己的包裹?
我正在尝试通过类似下面的命令编译一个使用两个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编程的新手,我收到了很多错误的"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) 我想弄清楚如何设置引用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引导程序类(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)