小编f1s*_*1sh的帖子

加载相对于执行jar文件的文件

问题就是这一切.

在我的情况下的特点是当前工作目录不是jar文件的位置,但是c:\Windows\system32(我的jar文件是由Windows使用右键单击菜单启动的,我想将文件夹的路径作为参数传递给jar) .

现在我想加载一个名为config.xmljar 的配置文件.当然,该文件的目的是为jar提供设置.这对我来说重要的是,XML文件,以方便编辑的jar文件.

我很难加载该文件.Windows执行该行

cmd /k java -jar D:\pathToJarfile\unpacker-0.0.1-SNAPSHOT-jar-with-dependencies.jar
Run Code Online (Sandbox Code Playgroud)

调用整个东西cmd /k会使windows命令提示符处于打开状态,以便我可以看到jar的输出.

我不能使用new File(".")System.getProperty("user.dir")为相对路径,因为这些函数返回C:\Windows\system32\.C:\Windows\system32分别,(这对于窗口执行AFAIK一切工作文件夹).

我也没有成功Launcher.class.getResourceAsStream("/../config.xml").由于该路径以此开头/,因此从jar的根节点开始搜索.要../config.xml完全指向该文件,但调用返回null.

有人能指出我正确的方向吗?我真的被困在这里了.这个文件加载的东西真的每次都让我烦恼......

我自己的要求:

  • 我不想在java源代码中硬编码路径
  • 我不想将文件的路径作为参数传递给java -jar调用(既不作为参数main(String[] args)也不-Dpath=d:\...用于设置系统属性)

除了最初的问题,我还很难在使用时将maven2 Class-Path: .放入MANIFEST.MF(BalusC发布的解决方案)中jar-with-dependencies.问题是该行出现在常规jar的MANIFEST文件中,但不是jar-with-dependencies.jar的MANIFEST文件(生成了2个jar文件).对于任何关心我如何做的人:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2-beta-5</version>
    <configuration>
      <archive>
        <manifest>
          <mainClass>${mainClass}</mainClass>
          <addClasspath>true</addClasspath>
          <!--at first, i tried to place the Class-Path entry
              right here using …
Run Code Online (Sandbox Code Playgroud)

java resources jar path

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

Java Web服务客户端中的连接详细信息和超时

我必须为给定的WSDL文件实现webservice客户端.我使用SDK的'wsimport'工具从WSDL创建Java类,以及将webservice唯一的方法(enhanceAddress(auth, param, address))包装到一个简单的java方法中的类.到现在为止还挺好.Web服务功能正常,返回结果正确.代码如下所示:

try {
  EnhancedAddressList uniservResponse = getWebservicePort().enhanceAddress(m_auth, m_param, uniservAddress);
  //Where the Port^ is the HTTP Soap 1.2 Endpoint
}catch (Throwable e) {
  throw new AddressValidationException("Error during uniserv webservice request.", e);
}
Run Code Online (Sandbox Code Playgroud)

问题现在:我需要获取有关连接的信息以及为了填充各种JMX值而可能发生的任何错误(例如COUNT_READ_TIMEOUT,COUNT_CONNECT_TIMEOUT,...)不幸的是,该方法没有正式抛出任何异常,所以按顺序获取有关的ConnectException细节,我需要使用getCause()ClientTransportException,将被抛出.

更糟糕的是:我试图测试读取超时值,但没有.我在wsdl文件中更改了服务的位置,将请求发布到php脚本,该脚本只是永远等待而不会返回.你猜怎么着:Web服务客户端并没有超时,但将永远等待,以及(我30多分钟的等待后,杀死了应用程序).这不是我的应用程序的一个选项,因为如果其中一些被"卡住",我最终会用完tcp连接.

enhanceAddress(auth, param, address)方法未实现,但使用javax.jws注释.*注释,意味着我无法查看/更改/检查实际执行的代码.

我有什么选择,但要扔掉整个wsimport/javax.jsw-stuff并实现我自己的soap客户端?

java timeout jmx jax-ws java-web-start

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

替换/删除两个字符之间的字符串

我想删除两个字符之间的字符串以及字符本身,例如:

我想替换"#?"之间所有出现的字符串 和";" 并用字符删除它.

由此

"this #?anystring; is  #?anystring2jk; test"
Run Code Online (Sandbox Code Playgroud)

对此

"this is test"
Run Code Online (Sandbox Code Playgroud)

我怎么能在java中做到这一点?

java string

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

在Java中使用抽象类中的受保护字段

我目前在一个基于Java的大学课程中,对于编码样本,教授正在使用protected字段来进行子类访问.

我问这是不好的做法,并被告知这是正常的.这是真的,为什么不使用setter和getter来抽象方法呢?我认为除非另有要求,否则最好限制尽可能多的信息.

我使用setter和getter测试了abstract父级,它适用于abstract子类的父类.虽然抽象类不能instantiated,他们仍然可以被用来创建对象时,subclassinstantiated因为据我所知.

这是一个简短的例子:

public abstract class Animal {
    protected int height;
}

public class Dog extends Animal {
    public Dog() {
        height = 6;
    }
}

public class Cat extends Animal {
    public Cat() {
        height = 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

与使用相反:

public abstract class Animal {
    private int height;

    public getHeight() {
        return height;
    }

    public setHeight(int height) {
        this.height = height;
    }
}

public class Dog …
Run Code Online (Sandbox Code Playgroud)

java abstract-class encapsulation

6
推荐指数
1
解决办法
3854
查看次数

JAVA - Class类和*.class文件之间的区别?

*.class文件和Class类API之间有一些我不理解的东西.我来解释一下:

我有一个代表java类的文件A.java:

public class A { ... }

Class<?> clazz = A.class;
Run Code Online (Sandbox Code Playgroud)

当我编译A.java时,我得到一个A.class文件(字节代码).

A.class文件(字节码)和表示实例类(A.class)的clazz之间是否有任何关系?它们是一样的吗 ?

谢谢

java oop reflection jvm class

6
推荐指数
1
解决办法
184
查看次数

Junit 失败 - 字符串中的引号比较

我正在尝试assertEquals使用JUnit 4, Java 8, 来比较 2 个字符串来检查解密函数,所以:

String data = "veryLongEncryptedString.....";
String value = DecUtils.decryptToken(data, null); //returns String
assertEquals("Here User name: ", "encrypt expected value", value);
Run Code Online (Sandbox Code Playgroud)

这些值相等,但控制台显示引用其中之一:

org.junit.ComparisonFailure: Here is test for Addition Result:  expected:<[xxx]> but was:<["xxx"]>
Run Code Online (Sandbox Code Playgroud)

如何使这两个值都带引号或不带引号?谢谢。

java junit4

6
推荐指数
1
解决办法
4408
查看次数

如何反编译Bytenode“jsc”文件?

我刚刚看到这个库ByteNode它与 java 的 ByteCode 相同,但这是用于 NodeJS。

这个库将你的 JavaScript 代码编译成 V8 字节码,它保护你的源代码,我想知道有没有反编译 byteNode 因此它不够安全。我想知道是因为我想使用这个库来保护我的源代码吗?

decompiling v8 bytecode node.js

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

在什么情况下你想为你的随机数生成器设置不同的种子?

我想知道你在什么情况下想要为你的随机数发生器设置不同的种子.我看到代码在某个地方人们Random每次需要时创建一个对象,并且看到人们有时会将它作为在构造对象时使用单个种子的实例变量.例如

// same seed
class A {
    private Random random;
    public A() { random = new Random(); }
    public int nextInt() { return random.nextInt(10000); }
    public double nextDouble() { return random.nextDouble(); }
}
Run Code Online (Sandbox Code Playgroud)

// different seed is used every time when you call the method
class B {
    public int nextInt() { return new Random().nextInt(10000); }
    public double nextDouble() { return new Random().nextDouble(); }
}
Run Code Online (Sandbox Code Playgroud)

请忽略这两个包装类的设计,只是试图显示差异.

java random probability

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

什么是用空格替换所有"System.out.println()"的正则表达式?

我需要从eclipse上的代码中删除所有System.out语句.

例:

System.out.println("hello");
System.out.println("hello" +a);
System.out.println(1 +b12);
Run Code Online (Sandbox Code Playgroud)

基本上所有的System.out陈述,无论它们的参数是什么.

我必须接下来,但它甚至没有接近

的System.out.println()*;?``

java regex

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