给出两条绝对路径,例如
/var/data/stuff/xyz.dat
/var/data
Run Code Online (Sandbox Code Playgroud)
如何创建使用第二条路径作为基础的相对路径?在上面的例子中,结果应该是:./stuff/xyz.dat
下面是一些代码片段,表明我现在正在尝试什么,但它不可靠.Princiaply我认为因为你只能注册一次协议处理程序,偶尔其他库可能会先这样做.
import org.apache.xerces.util.XMLCatalogResolver;
public static synchronized XMLCatalogResolver getResolver() {
String c[] = {"classpath:xml-catalog.xml"};
if (cr==null) {
log.debug("Registering new protcol handler for classpath");
ConfigurableStreamHandlerFactory configurableStreamHandlerFactory = new ConfigurableStreamHandlerFactory("classpath", new org.fao.oek.protocols.classpath.Handler(XsdUtils.class.getClassLoader()));
configurableStreamHandlerFactory.addHandler("http", new sun.net.www.protocol.http.Handler());
URL.setURLStreamHandlerFactory(configurableStreamHandlerFactory);
log.debug("Creating new catalog resolver");
cr = new XMLCatalogResolver(c);
}
return cr;
}
Run Code Online (Sandbox Code Playgroud)
xml-catalog.xml包含:
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<group prefer="public" xml:base="classpath:org/me/myapp/xsd/" >
<uri name="http://www.w3.org/XML/1998/namespace" uri="xml.xsd"/>
<uri name="http://www.w3.org/1999/xlink" uri="xlink.xsd" />
<uri name="http://www.w3.org/2001/XMLSchema" uri="XMLSchema.xsd" />
<uri name="http://purl.org/dc/elements/1.1/" uri="dc.xsd" />
<uri name="http://www.loc.gov/mods/v3" uri="mods-3.3.xsd" />
</group>
</catalog>
Run Code Online (Sandbox Code Playgroud)
显然 - xsd文件存在于类路径中的正确位置.
我正在尝试使用KeyStore从密钥库中获取信息.我使用此命令生成了密钥库:
keytool -genkey -alias server -keyalg RSA -keystore server.keystore -validity 365
采取这个页面.
检查其信息keytool -list -v -keystore server.keystore
我得到以下内容:
别名:server
创建日期:2014年4月30日
条目类型:PrivateKeyEntry
证书链长:1
证书[1] :(
其他信息在这里)
使用此命令:keytool -list -keystore server.keystore -alias server
我得到这个:
服务器,2014年4月30日,PrivateKeyEntry,证书指纹(SHA1):28:65:5B:0C:B3:3C:C9:AA:F1:7C:CE:91:23:77:DD:0D:F8:54 :70:B9
现在,我的java代码:
keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(getClass().getResourceAsStream(KEYSTORE_FILE_PATH), "myPass".toCharArray());
keyStore.getCertificate("server").getPublicKey().getEncoded(); //here I get a null pointer exception - keystore.getCertificate("server") returns null.
Run Code Online (Sandbox Code Playgroud)
执行keyStore.aliases()
返回EmptyEnumeration.
该应用程序使用maven,java ee 7,我已经将密钥库文件复制到我的应用程序的resources文件夹中.KEYSTORE_FILE_PATH的值为"/server.keystore".
谢谢.
我有 jar 文件langdetect.jar
。它具有如图所示的层次结构
LanguageDetection
包里有一个课程com/langdetect
。我需要profiles.sm
在执行 jar 文件时从上面的类访问文件夹的路径。
提前致谢。
我知道这个问题已经被问过好几次了,但我仍然无法通过这些解决方案来解决它。
我有一个 Maven 项目。一个 Config.java 文件位于consumer/src/main/java
. 以下是内容:
import java.util.Properties;
public class Config {
Properties configFile;
public Config() {
configFile = new Properties();
try {
configFile.load(this.getClass().getClassLoader().
getResourceAsStream("property_table.config.txt"));
} catch(Exception e) {
e.printStackTrace();
}
}
public String getProperty(String key) {
String value = this.configFile.getProperty(key);
return value;
}
public static void main(String[] args) {
Config config = new Config();
System.out.println("URL: " + config.getProperty("URL"));
System.out.println("PASSWORD: " + config.getProperty("PASSWORD"));
}
}
Run Code Online (Sandbox Code Playgroud)
我不断得到nullpointer exception
。我知道那是因为它找不到文件property_table.config.txt
。
起初,我将property_table_config.txt
文件放在与consumer/src/main/java/
Config.java 文件相同的文件夹中()。并尝试使用 …