相关疑难解决方法(0)

如何在类路径中使用通配符添加多个jar?

我一直在使用这么多的第三方库(jar文件),我的CLASSPATH完全搞砸了,因为我必须包含我使用的每个jar文件的路径.

我一直想知道是否有办法使用通配符(*)运算符(如*.jar)将所有jar文件包含在文件夹中.但似乎没有用.有没有其他方法可以缩短当前看起来像文章的CLASSPATH;)在我的电脑上?

java wildcard classpath

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

.jar和.dll文件之间的区别

我这几天正在学习Java,我花了很多时间在.NET上,所以当我想导出或导入库时,它们通常是.dll格式,在.Net环境中称为汇编,它们被编译为IL他们可以通过任何方式拥有图像,xml,音频和儿子等资源.

我也想知道Java中的相同过程.我已经阅读了文档,但他们实际上让我感到困惑,并澄清了我需要你帮助的人.

问题:

  1. .NET程序集与java .jar是一回事吗?
  2. .dll包含已编译的IL代码,而.jar包含已编译的.class/byte代码文件?
  3. 他们说资源,我们在这里谈论什么样的资源?图像,.txt文件等等或所有这些都可能吗?

  4. 我已经检查了AWS(适用于Java的Amazon Web Service API),我看到了三个.jar文件

    1. AWS-Java的SDK-1.1.1.jar
    2. AWS-Java的SDK-1.1.1-javadoc.jar
    3. AWS-Java的SDK-1.1.1-sources.jar

它们包含.class文件 - html格式的java文档和仍未编译的.java文件.所以我意识到.jar不仅包括编译的字节代码(.class)以及其他内容.

  1. 当我想导入java库时,我是否总是需要导入.jar文件?
  2. 当我想导出自己的java库时,我是否需要导出.jar文件.

提前感谢您的帮助.

c# java

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

从命令提示符处执行带有多个类路径库的jar文件

我有一个Maven项目,它生成一个jar文件并将所有依赖项复制到target/lib文件夹.我想在客户端的机器(windows)上执行这个项目.所以,我复制myproject.jarC:\xyz文件夹和所有依赖项到C:\xyz\lib文件夹.如何从客户端的命令提示符执行此项目?我试图java -cp lib\*.jar -jar myproject.jarC:\xyz文件夹使用,但它抛出以下错误.

Exception in thread "main" java.lang.NoClassDefFoundError: lib\commons-codec-1/3/jar
Caused by: java.lang.ClassNotFoundException: lib\commons-codec-1.3.jar
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: lib\commons-codec-1.3.jar.  Program will exit.
Run Code Online (Sandbox Code Playgroud)

我想如果我在classpath(如java -cp lib\dep1.jar;dep2.jar)中指定所有依赖项,它将解决问题,但我不想这样做,因为我已经有40个库,并且它可能会在将来的版本中增长.有一个更好的方法吗?

java jar classpath maven

54
推荐指数
4
解决办法
14万
查看次数

设置类路径的文件夹

从命令行,如何将Java CLASSPATH选项设置为指向包含多个jar文件的一个或多个目录?是否存在递归目录和子目录支持的通配符?

(我的JAR文件在几个子目录中排序.)

java jar classpath

47
推荐指数
2
解决办法
13万
查看次数

外部log4j.xml文件

我试图在jar外面的文件系统上运行带有log4j.xml文件的jar,如下所示:

java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=log4j.xml argToJar1 argToJar2
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=/opt/companyName/pathToJar/log4j.xml argToJar1 argToJar2
Run Code Online (Sandbox Code Playgroud)

log4j.xml文件与jar(/ opt/companyName/pathToJar /)位于同一目录中,但我仍然收到标准警告消息:

log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).
log4j:WARN Please initialize the log4j system properly.
Run Code Online (Sandbox Code Playgroud)

是否可以将配置文件放在jar外面,或者我是否必须将它与jar打包?

TIA

java logging log4j

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

运行java -jar时包含外部jar

从我的读数来看,执行命令时如下:

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

然后忽略主类路径,并从清单文件中获取类路径.

此外,还会忽略在命令行上声明的类路径.所以在:

java -classpath /usr/local/jar/foobar.jar -jar foo.jar
Run Code Online (Sandbox Code Playgroud)

/usr/local/jar/foobar.jar被忽略.

最后,我已经读过清单文件只能在jar文件中包含相对路径.

那么,如何包含系统中存在的外部jar的绝对路径,而不是正在执行的jar文件中?

java jar manifest.mf classpath

38
推荐指数
2
解决办法
9万
查看次数

如何一次性包含CLASSPATH中特定目录下的所有jar?

我的应用程序使用的特定目录中有数百个罐子.所以我认为很难将每个罐子逐个添加到类路径中.所以有任何命令或任何方式,以便我可以一次性添加所有的罐子.有些人*.jar应该添加所有的罐子.

java classpath

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

将.jar添加到classpath(Scala)

所以我一直在尝试使用信号收集框架,我下载了.jar文件并将其解压缩到一个文件夹中.目前文件夹结构如下:

LICENSE.txt  
PageRank.scala  
core-1.1.1-sources.jar  
dependencies/  
javaapi-1.1.1-sources.jar  
NOTICE.txt  
README.txt  
core-1.1.1.jar  
javaapi-1.1.1-javadoc.jar  
javaapi-1.1.1.jar  
Run Code Online (Sandbox Code Playgroud)

PageRank.scala他们提供的Scala测试代码在哪里,即:

import com.signalcollect._

object PageRank extends App {
  val graph = GraphBuilder.build
  graph.addVertex(new PageRankVertex(id=1))
  graph.addVertex(new PageRankVertex(id=2))
  graph.addEdge(new PageRankEdge(sourceId=1, targetId=2))
  graph.addEdge(new PageRankEdge(sourceId=2, targetId=1))
  graph.execute
  graph.foreachVertex(println(_))
  graph.shutdown
}

class PageRankVertex(id: Any, dampingFactor: Double=0.85)
    extends DataGraphVertex(id=id, state=1-dampingFactor) {
  type Signal = Double

  def collect(oldState: Double, mostRecentSignals: Iterable[Double]): Double = {
    1 - dampingFactor + dampingFactor * mostRecentSignals.sum
  }

}

class PageRankEdge(sourceId: Any, targetId: Any)
    extends DefaultEdge(sourceId, targetId) …
Run Code Online (Sandbox Code Playgroud)

jvm scala jar classpath

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

scala"错误:使用utf-8解码时出现错误""

这个东西不断出现我检查了我的所有源文件都是utf8编码,我使用'-encoding UTF8'标志与scalac和scala命令行工具有
什么想法?

谢谢

scala

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

Windows上Java7命令行的通配符断开(7?)

我在Windows上观察到Java7的通配符扩展行为的奇怪行为.

几个世纪以来,"*"与*之间存在着明显的差异.
似乎这对Java7来说不再适用(至少在Windows7上).

我在使用通配符类路径时注意到了这个问题.
尽管引用了wildcard-classpath,它仍然会被扩展.
因此,似乎不可能再将通配符传递给java应用程序.

因此使用java -cp "somewhere/*"将失败(如同"somewhere\*").

一种解决方法似乎是:java -cp "somewhere/*;"它抑制了扩张.

为了验证行为,我写了一个小的Echo.java类.

我发现使用java 1.6.0引用"*"和plain*就像预期的那样工作,而在Java7上我总是得到扩展的通配符.到目前为止,这在Windows7上被观察到,不知道XP上会发生什么.

问题出现了,因为Windows上的通配符永远不会被黑暗时代CMD.EXE扩展(就像UNIX上的任何shell一样).相反,每个可执行文件都必须使用setargv.obj显式执行此操作.

我发现了两个似乎描述类似问题的相关问题:

这是否被其他人观察到了?
或者是否有一些模糊的Windows或批处理文件设置来控制它?

迪特.

java command-line wildcard classpath windows-7

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

标签 统计

java ×8

classpath ×7

jar ×4

scala ×2

wildcard ×2

c# ×1

command-line ×1

jvm ×1

log4j ×1

logging ×1

manifest.mf ×1

maven ×1

windows-7 ×1