我有资源文件夹中的文件.例如,如果我需要从资源文件夹中获取文件,我喜欢这样:
File myFile= new File(MyClass.class.getResource(/myFile.jpg).toURI());
System.out.println(MyClass.class.getResource(/myFile.jpg).getPath());
Run Code Online (Sandbox Code Playgroud)
我已经测试过,一切正常!
路径是
/D:/java/projects/.../classes/X/Y/Z/myFile.jpg
但是,如果我创建jar文件,使用,Maven:
mvn package
Run Code Online (Sandbox Code Playgroud)
...然后启动我的应用程序:
java -jar MyJar.jar
Run Code Online (Sandbox Code Playgroud)
我有以下错误:
Exception in thread "Thread-4" java.lang.RuntimeException: ხელმოწერის განხორციელება შეუძლებელია
Caused by: java.lang.IllegalArgumentException: URI is not hierarchical
at java.io.File.<init>(File.java:363)
Run Code Online (Sandbox Code Playgroud)
... 和文件的路径是:
file:/D:/java/projects/.../target/MyJar.jar!/X/Y/Z/myFile.jpg
Run Code Online (Sandbox Code Playgroud)
当我尝试从资源文件夹中获取文件时,会发生此异常.在这条线上.为什么?为什么JAR文件中存在这个问题?你怎么看?
有另一种方法,获取资源文件夹路径?
我有春季4申请.目前我使用JpatransactionManager.
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
Run Code Online (Sandbox Code Playgroud)
你能告诉我如何选择交易经理吗?
例如,什么时候我应该使用jta事务管理器和jpa时,它们有什么好处和缺点?
我知道我有两种方式在春天工作.首先是JPA方式和第二种Hibernate方式.第一个包括java标准注释和标准api,第二个是hibenrate实现.如果我需要使用JTA,我必须使用hibernate而不是JPA,不是吗?
我想将PDF文档转换为图像.我在使用Ghost4j.
问题: Ghost4J需要gsdll32.dll文件在运行时,我也并不想使用的DLL文件.
问题1:有什么办法,在ghost4j中转换图像而不用dll?
问题2:我在PDFBox API中找到了解决方案.org.apache.pdfbox.pdmodel.PDPagep
have methodconvertToImage()`将PDF页面转换为图像格式.
PDDocument doc = PDDocument.load(new File("/document.pdf"));
List<PDPage>pages = doc.getDocumentCatalog().getAllPages();
PDPage page = pages.get(0);
BufferedImage image =page.convertToImage();
File outputfile = new File("/image.png");
ImageIO.write(image, "png", outputfile);
doc.close();
Run Code Online (Sandbox Code Playgroud)
我在PDF文档上只有文字.当我运行此代码时,我有这个例外:
Aug 12, 2013 6:00:24 PM org.apache.pdfbox.util.PDFStreamEngine processOperator
INFO: unsupported/disabled operation: BDC
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.getawtFont(PDTrueTypeFont.java:481)
at org.apache.pdfbox.pdmodel.font.PDSimpleFont.drawString(PDSimpleFont.java:109)
at org.apache.pdfbox.pdfviewer.PageDrawer.processTextPosition(PageDrawer.java:235)
at org.apache.pdfbox.util.PDFStreamEngine.processEncodedText(PDFStreamEngine.java:496)
at org.apache.pdfbox.util.operator.ShowTextGlyph.process(ShowTextGlyph.java:62)
at org.apache.pdfbox.util.PDFStreamEngine.processOperator(PDFStreamEngine.java:554)
at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:268)
at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:235)
at org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:215)
at org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(PageDrawer.java:125)
at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:781)
at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:712)
at …Run Code Online (Sandbox Code Playgroud) 我写过Spring控制器.这得到了客户的要求.这只是REST风格.
这是非常好的.但我需要证书身份验证.只有客户端必须能够访问具有密钥的客户端证书的其余服务(spring控制器)(换句话说,客户端应该具有带密钥的密钥库).
如何将此安全性配置为弹簧?你能给我一个例子或链接吗?
谢谢
我正在使用JPA类创建数据库.
如果我们有ManyToOne关系,我们可以像这样覆盖ForeignKey名称:
@ManyToOne
@JoinColumn(foreignKey = @ForeignKey(name = "FK_COUNTRY"))
private Country country;
Run Code Online (Sandbox Code Playgroud)
在DB中,我们将得到这样的结果:

好的,那很好.好结果!
但是当我有@ManyToMany时,我将无法设置我自己的FK名称.
我该如何创建呢?我尝试这样的东西,但它不起作用:
@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
@JoinTable(name = "NEW_TABLE", foreignKey = @ForeignKey(name = "FK_TEST"))
Run Code Online (Sandbox Code Playgroud)
或类似的东西:
@JoinTable(
name="NEW_TABLE",
joinColumns=
@JoinColumn(name="ID1", referencedColumnName="ID", foreignKey = @ForeignKey(name = "FK_DEV_ID")),
inverseJoinColumns=ID2", referencedColumnName="ID", foreignKey = @ForeignKey(name = "FK_DEV_ZONE"))
)
Run Code Online (Sandbox Code Playgroud)
或这个:
@ManyToMany(cascade = CascadeType.PERSIST)
@JoinTable(name="NEW_TABLE_2",
joinColumns=
@JoinColumn(name="ID1", referencedColumnName="ID",
foreignKey = @ForeignKey(name = "FK_1")
),
inverseJoinColumns=
@JoinColumn(name="ID2", referencedColumnName="ID",
foreignKey = @ForeignKey(name = "FK_2")
),
foreignKey = @ForeignKey(name = "FK_1"),
inverseForeignKey = …Run Code Online (Sandbox Code Playgroud) 我有一个Spring Web应用程序,我使用Spring安全性进行了用户身份验证.
一切都很好.登录和注销工作完美!
现在,我想实现以便自动注销.例如,如果用户打开窗口大约30分钟并且什么也不做(例如,会话已过期)系统应该自动注销.我该如何实现呢?
它可能由客户端实现(我每1分钟发送一次请求并检查会话是否结束).但我不能自动从Spring那里做到这一点吗?
我有这个配置:
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/admin**" />
<access-denied-handler error-page="/403" />
<form-login login-page="/login"
default-target-url="/admin"
authentication-failure-url="/login?error"
username-parameter="NAME"
password-parameter="PASSWORD" />
<logout invalidate-session="true"
logout-success-url="/login?logout"/>
</http>
Run Code Online (Sandbox Code Playgroud)
并在web.xml中
<session-config>
<session-timeout>1</session-timeout>
</session-config>
Run Code Online (Sandbox Code Playgroud)
1分钟后,我看到会话被破坏了.1分钟后杀死会话.但是页面没有重定向到/ login?logout
我有这样的地图:
Map<Integer, MyEntry> map = new HashMap<Integer, MyEntry>();
Run Code Online (Sandbox Code Playgroud)
MyEntry是这样的:
public class MyEntry {
private String title;
private String value;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
Run Code Online (Sandbox Code Playgroud)
将值放入地图后,我想对其进行排序.第一个元素是最小的,最后一个元素是最大的.
我正在使用 Google 自动完成地址表单。我在谷歌官方网页上找到了示例。一切安好。一切正常!但它是原生 Javascript,
我有 Vue 应用程序,但我不喜欢从 JS 脚本更改文本输入值的方式。这个想法是,当我更改主输入中的某些内容时,JS 事件侦听器应该更改其他输入的值:
document.getElementById(addressType).value = val;
Run Code Online (Sandbox Code Playgroud)
问题是我应该使用“文档”来更改值:
document.getElementById('street_number').value
Run Code Online (Sandbox Code Playgroud)
我想有类似的东西:
<input type="text" v-model="input.address" ref="addressRef">
Run Code Online (Sandbox Code Playgroud)
并读取值:
export default {
data() {
return {
input: {
address: "",
...
}
};
},
methods: {
test() {
console.log(this.input.address);
console.log(this.$refs.addressRef);
}
}
Run Code Online (Sandbox Code Playgroud)
所以问题是:
我有两个证书.一个证书是另一个证书的颁发者.
我如何看到java代码,我的发行人证书真的是发行人?
我知道我的证书的AuthorityKeyIdentifier和颁发者证书的SubjectKeyIdentifie必须是相同的.我查了一下,他们是一样的.
但使用java代码我有这样的结果:
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
InputStream usrCertificateIn = new FileInputStream("/usr.cer");
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(usrCertificateIn);
InputStream SiningCACertificateIn = new FileInputStream("/siningCA.cer");
X509Certificate issuer = (X509Certificate) certFactory.generateCertificate(SiningCACertificateIn);
byte[] octets = (ASN1OctetString.getInstance(cert.getExtensionValue("2.5.29.35")).getOctets());
System.out.println(Arrays.toString(octets) + " bouncycastle, AuthorityKeyIdentifier");
System.out.println(Arrays.toString(cert.getExtensionValue("2.5.29.35")) + "java.security, AuthorityKeyIdentifier");
octets = ASN1OctetString.getInstance(issuer.getExtensionValue("2.5.29.14")).getOctets();
System.out.println((Arrays.toString(octets) + "bouncycastle, SubjectKeyIdentifie "));
System.out.println(Arrays.toString(issuer.getExtensionValue("2.5.29.14")) + "java.security, SubjectKeyIdentifie ");
Run Code Online (Sandbox Code Playgroud)
结果是:
[48,22,-128,20,52,-105,49,-70,-24,78,127,-113,-25,55,39,99,46,6,31,66,-55, -86,-79,113 ] bouncycastle,AuthorityKeyIdentifier
[ 4,24,48,22,-128,20,52,-105,49,-70,-24,78,127,-113,-25,55,39,99,46,6,31,66 ,-55,-86,-79,113 ] java.security,AuthorityKeyIdentifier
和另一个必须相同的字节数组,但不是在数组的开头添加另一个字节.
[ 4,20,52,-105,49,-70,-24,78,127,-113,-25,55,39,99,46,6,31,66,-55,-86,-79 …
bouncycastle certificate digital-certificate x509certificate x509
我有詹金斯1.598.我将自动部署插件安装到jenkins中(但它不适用于tomcat 8,还没有更新).
一切都很好!构建完成后,它开始重新部署.但有时我会有这样的错误,我不明白它何时以及为什么会发生.当我重新启动tomcat时,一切都再好了!
Deploying C:\jenkins\test\target\tr-gui.war to container Tomcat 7.x Remote
Redeploying [C:\jenkins\test\target\tr-gui.war]
Undeploying [C:\jenkins\test\target\tr-gui.war]
ERROR: Publisher hudson.plugins.deploy.DeployPublisher aborted due to exception
org.codehaus.cargo.container.ContainerException: Failed to undeploy [C:\jenkins\test\target\tr-gui.war]
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.undeploy(AbstractTomcatManagerDeployer.java:140)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:178)
at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:73)
at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:116)
at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:103)
at hudson.FilePath.act(FilePath.java:981)
at hudson.FilePath.act(FilePath.java:959)
at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:103)
at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:61)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:770)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:734)
at hudson.model.Build$BuildExecution.post2(Build.java:183)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:683)
at hudson.model.Run.execute(Run.java:1784)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:89)
at hudson.model.Executor.run(Executor.java:240)
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Unable to delete [C:\servers\tomcat 8\webapps\test]. The continued presence of this file may cause …Run Code Online (Sandbox Code Playgroud) java ×5
spring ×3
jpa ×2
spring-mvc ×2
bouncycastle ×1
certificate ×1
foreign-keys ×1
ghost4j ×1
hashmap ×1
hibernate ×1
jar ×1
java-7 ×1
javascript ×1
jenkins ×1
jta ×1
maven ×1
naming ×1
pdf ×1
pdfbox ×1
rest ×1
sorting ×1
tomcat ×1
vue.js ×1
vuejs2 ×1
x509 ×1