对于某些应用程序,我使用ZK,其他Hibernate,其他Apache Commons等.
我不想部署一个75MB的war文件,因为它使用了大量的库.
我不想将库添加到我的tomcat lib文件夹中,也不想将其添加到其配置的类路径中,因为我可能有一个使用库x.1的旧应用程序和另一个使用库x.2的应用程序
出于这个原因,在web.xml或context.xml中有一些东西会很棒,我会说:
<classpath>/usr/local/tomcat/custom-libs/zk-5.0.4</classpath>
Run Code Online (Sandbox Code Playgroud)
注意:以上是伪代码
我想用Maven2 构建一个Axis2客户端(我只访问一个远程Web服务,我没有实现一个!),我不想在我的项目中添加21MB的JAR.当我用ADB转换WSDL时,我需要在我的pom.xml中编译代码?
这是我想要做的,我想知道是否有任何Spring类有助于实现.我没有必要使用spring来解决这个问题,我只是用其他一切来实现它.
在我的DAO层中,我想要外化我的sql文件,即每个文件1个sql.我想读取并缓存sql语句,甚至可能作为一个spring bean单例.但在我最初的挣扎中,我只是在类路径中加载一个sql文件时遇到了问题...
春天有什么东西可以帮助吗?我已经阅读了文档,但没有任何内容可以跳出来.
这是我正在追求的东西......但我无法识别文件或类似路径...不确定是否需要在applicationContext中定义某些内容?
这里有几个似乎不起作用的尝试......无论是春天还是只是java'ish.
reader = new BufferedReader(new InputStreamReader(new ClassPathResource("com.company.app.dao.sql.SqlQueryFile.sql").getInputStream())
reader = new BufferedReader(new InputStreamReader(ClassLoader.getSystemResourceAsStream("com.company.app.dao.sql.SqlQueryFile.sql")));
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
在Scala中是否有一个单行程序从classpath读取文件而不使用外部依赖项,例如commons-io?
IOUtils.toString(getClass.getClassLoader.getResourceAsStream("file.xml"), "UTF-8")
Run Code Online (Sandbox Code Playgroud) 我还是比较新的Java,所以请耐心等待.
我的问题是我的Java应用程序依赖于两个库.让我们称它们为库1和库2.这两个库共享对库3的相互依赖.但是:
这正是JAR地狱的定义(或者至少是其中的一个变体).如链接中所述,我无法在同一个类加载器中加载第三个库的两个版本.因此,我一直试图弄清楚是否可以在应用程序中创建一个新的类加载器来解决这个问题.我一直在研究URLClassLoader,但我无法弄明白.
这是一个演示问题的示例应用程序结构.应用程序的Main类(Main.java)尝试实例化Library1和Library2,并运行在这些库中定义的一些方法:
Main.java(原始版本,在尝试解决方案之前):
public class Main {
public static void main(String[] args) {
Library1 lib1 = new Library1();
lib1.foo();
Library2 lib2 = new Library2();
lib2.bar();
}
}
Run Code Online (Sandbox Code Playgroud)
Library1和Library2都共享对Library3的相互依赖,但是Library1需要版本1,而Library2只需要版本2.在这个例子中,这两个库只打印他们看到的Library3版本:
Library1.java:
public class Library1 {
public void foo() {
Library3 lib3 = new Library3();
lib3.printVersion(); // Should print "This is version 1."
}
}
Run Code Online (Sandbox Code Playgroud)
Library2.java:
public class Library2 {
public void foo() {
Library3 lib3 = new Library3();
lib3.printVersion(); // Should print "This is …Run Code Online (Sandbox Code Playgroud) 在构建路径中获取JRE系统库未绑定错误,尝试了以下链接中的所有建议,但是无法正常工作.我有jdk 1.6.0_29,我也试过安装其他版本但没有帮助.
JRE系统库[WebSphere v6.1 JRE](未绑定) Eclipse错误:未绑定的类路径容器 Java - 无限制的类路径容器Websphere V6 JRE 努力更新Eclipse中的JRE依赖项 Eclipse中的 未绑定类路径容器错误中的未绑定类路径容器错误? Java Web项目构建错误 eclipse中的未绑定的类路径容器错误?
maven编译器版本是这样的:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>${project.build.sourceEncoding}</encoding>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud) 这是.classpath我下载的eclipse插件程序的eclipse 文件.
我认为这kind="src"和kind="output"是相当直接的,因为它们意味着在源java文件和编译的类文件的位置.
在kind="lib"似乎预示着jar文件的插件引用,但我有我不知道的东西.
kind="con"意思?exported="true"?我认为为了使用这个插件,应该导出插件引用的所有jar文件,但只导出其中的一些.
我的项目目录结构(在Eclipse中):
MyProject/
src/ --> "source directory" on Eclipse's classpath/buildpath
com.me.myapp
Driver
myconfig.txt
Run Code Online (Sandbox Code Playgroud)
在Driver,我有以下代码:
public class Driver {
public static void main(String[] args) {
InputStream is = ClassLoader.getSystemClassLoader.getResourceAsStream("myconfig.txt");
if(is == null)
System.out.println("input stream is null");
else
System.out.println("input stream is NOT null :-)");
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到以下控制台输出:
input stream is null
Run Code Online (Sandbox Code Playgroud)
为什么?我是否放置myconfig.txt在错误的位置?我是否错误地使用了ClassLoader API?别的什么?提前致谢!
我已阅读以前发布的问题.有些是模糊的,没有一个解决我的问题,所以我不得不再问.
我有两个简单的课程,
package One;
import One.Inner.MyFrame;
public class test
{
public static void main(String args[])
{
MyFrame f= new MyFrame();
}
}
Run Code Online (Sandbox Code Playgroud)
而另一类是,
package One.Inner;
import java.awt.*;
import javax.swing.*;
public class MyFrame extends JFrame
{
public MyFrame()
{
setPreferredSize(new Dimension(400,560));
setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
我在Windows cmd中的基本文件夹"基本".我编译使用
basic> javac *.java -d .
Run Code Online (Sandbox Code Playgroud)
创建文件夹和子文件夹.
cd One
basic\One> java test
Run Code Online (Sandbox Code Playgroud)
这会产生一大堆错误.许多答案旨在指定不起作用的完整路径.我的类在One中,因此指定一个使用-cp也不起作用.
我试图加载具有特定文件扩展名的所有资源,这些资源在运行时使用URLClassloader动态加载.
不幸的是,当我使用模式时,PathMatchingResourcePatternResolver不返回任何资源classpath*:/*.myextension.当我指定一个文件的完整名称,如classpath*:/test.myextension资源加载,所以我认为类加载器配置正确.
URLClassloader classloader = new URLClassloader(jarURLs); // jarURLs look like "file:C:/Temp/test.jar"
Thread.getCurrentThread().setContextClassloader(classloader)
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(classloader);
Resource[] resources = resolver.getResources("classpath*:/*.myextension") // yields empty array
....
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我必须动态加载jar,我不提前知道资源名称.