我想只混淆服务器端代码(webapp.war:/ WEB-INF/classes/**).
我怎么能用proguard maven插件做到这一点?
我在日志中收到一些警告,如下所示:
java.io.FileNotFoundException: C:\Users\user\.m2\repository\com\lowagie\itext\2.0.8\bcmail-jdk14-138.jar (O sistema não pode encontrar o arquivo especificado)
at java.util.zip.ZipFile.open(Native Method) ~[na:1.8.0_121]
at java.util.zip.ZipFile.<init>(ZipFile.java:219) ~[na:1.8.0_121]
at java.util.zip.ZipFile.<init>(ZipFile.java:149) ~[na:1.8.0_121]
at java.util.jar.JarFile.<init>(JarFile.java:166) ~[na:1.8.0_121]
at java.util.jar.JarFile.<init>(JarFile.java:130) ~[na:1.8.0_121]
at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:60) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:48) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:338) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:288) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
at org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:262) [tomcat-embed-jasper-8.5.6.jar:8.5.6]
at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:104) [tomcat-embed-jasper-8.5.6.jar:8.5.6]
at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:101) [tomcat-embed-jasper-8.5.6.jar:8.5.6]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5178) [tomcat-embed-core-8.5.6.jar:8.5.6]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.5.6.jar:8.5.6]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1403) [tomcat-embed-core-8.5.6.jar:8.5.6]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) [tomcat-embed-core-8.5.6.jar:8.5.6]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_121]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]
Run Code Online (Sandbox Code Playgroud)
在一个独立的tomcat中,我可以创建一个context.xml:
<Context>
...
<JarScanner scanManifest="false"/>
... …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个AspectJ Aspect,以拦截具有通用接口的返回方法。
这是我的AspectJ
@AspectJ
public class MyAspect {
@AfterReturning("execution(java.util.Collection+<mypackage.MyAbstractEntity+> mypackage.mvc.controllers..*.*(..))", returning = "list")
public doStuff(JoinPoint j, Collection<MyAbstractEntity> list) {
}
}
Run Code Online (Sandbox Code Playgroud)
这是我想参加的班级:
package mypackage.mvc.controller;
public class MyController {
// MyEntity extends MyAbstractEntity
public List<MyEntity> findAll() {
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我想在TextField表达式中使用lambda表达式,如下所示:
Arrays.asList($F{field1}, $F{field2}, $F{field3}).stream().filter(i -> i != null).collect(java.util.stream.Collectors.joining(" / "))
Run Code Online (Sandbox Code Playgroud)
假设这些字段的值:
$F{field1} = 1
$F{field2} = null
$F{field3} = 2
Run Code Online (Sandbox Code Playgroud)
TextField评估的预期结果是:
1 / 2
Run Code Online (Sandbox Code Playgroud)
而不是我在IDE中收到错误:
Lambda expressions are allowed only at source level 1.8 or above
Run Code Online (Sandbox Code Playgroud)
这是编译期间IDE内部的异常:
net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file:
1. Lambda expressions are allowed only at source level 1.8 or above
value = "Contato: " + Arrays.asList(((java.lang.String)field_c_telefone.getValue()), ((java.lang.String)field_c_celular.getValue()), ((java.lang.String)field_c_fax.getValue()), ((java.lang.String)field_c_email.getValue())).stream().filter(i -> i != null).collect(java.util.stream.Collectors.joining(" / ")); //$JR_EXPR_ID=22$
<------------>
2. Lambda expressions are …Run Code Online (Sandbox Code Playgroud) 我需要将外部zip文件部署到我的私有maven存储库.这个文件将满足我的应用程序版本,内部存档将使用jar,dll,configs,exes来满足我的应用程序的文件结构......
如何使用gradle执行maven部署:deploy-file?
mvn deploy:deploy-file
-DgroupId=acme
-DartifactId=acme
-Dversion=1.0
-Dpackaging=jar
-Dfile=C:\tmp\acme-1.0.jar
-DrepositoryId=Nexus
-Durl=http://myserver:8888/nexus/content/repositories/thirdparty/
Run Code Online (Sandbox Code Playgroud)
我正在尝试将外部zip文件发布到我的maven存储库:
apply plugin: "base"
apply plugin: "maven"
apply plugin: "maven-publish"
publishing {
def host = "myhost"
def url = "http://$host/content/repositories/releases"
def group = "package"
def artifact = "name"
def version = "0.0.1"
def file = "c:/my.zip"
publications {
mavenJava(MavenPublication) {
create('zip', MavenPublication) {
groupId "$group"
artifactId "$artifact"
version "$version"
artifact file("$file")
}
}
}
repositories {
maven {
credentials {
username 'user'
password 'pwd'
}
url "$url"
}
} …Run Code Online (Sandbox Code Playgroud) 我正在创建一个模拟用户输入(鼠标和键)的框架.
该框架将提供用于简单实现DUnit测试的API.
我目前面临的一个重大问题是等待应用程序空闲.
我有一个服务器(TCP)接收命令,如"类型文本","按键","单击XY"...我需要等待处理这些命令,然后返回到客户端API继续运行测试的下一步.
由于我的服务器通过线程接收并执行操作,因此不存在捕获执行的风险,就像单击将显示模式消息的按钮一样.
我目前正在使用ApplicationEvents.OnIdle来帮助我,但在某些情况下它不能很好地工作.
我也尝试使用WaitForInputIdle,但只是它没有解决我的问题,因为应用程序可能仍在处理用户输入后处理操作...
有人能帮我吗?
我对 Delphi 和 WebBrowser 组件很着迷。
我创建了一个简单的应用程序,在备忘录中输入 HTML 并在 WebBrowser 组件中显示结果。
但是,当我在 WebBrowser 内部单击时,每个 HTML 代码更新(在备忘录中)都会导致 WebBrowser 组件窃取焦点。
以下是重现问题的分步说明:
在 Memo1.OnChange 事件上插入:
if WebBrowser1.Document = nil then
begin
WebBrowser1.Navigate('about:blank');
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
end;
ms := TMemoryStream.Create;
try
Memo1.Lines.SaveToStream(ms);
ms.Seek(0, 0);
(WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)) ;
finally
ms.Free;
end;
Run Code Online (Sandbox Code Playgroud)运行应用程序
在备忘录中输入 HTML
<html>
<body>
Hello WebBrowser
</body>
</html>
Run Code Online (Sandbox Code Playgroud)在 WebBrowser 内容中单击
我怎样才能解决这个问题并防止“窃取焦点”?
Ps.:唯一的解决方法是 …
我需要在序列化时动态过滤 bean 属性。
这@JsonView对我来说不是一个选择。
假设我的 Bean(作为 Json 表示法):
{
id: '1',
name: 'test',
children: [
{ id: '1.1', childName: 'Name 1.1' },
{ id: '1.2', childName: 'Name 1.2' }
]
}
Run Code Online (Sandbox Code Playgroud)
我想编写具有以下属性的 JSON:
// configure the ObjectMapper to only serialize this properties:
[ "name", "children.childName" ]
Run Code Online (Sandbox Code Playgroud)
预期的 JSON 结果是:
{
name: 'test',
children: [
{ childName: 'Name 1.1' },
{ childName: 'Name 1.2' }
]
}
Run Code Online (Sandbox Code Playgroud)
最后,我将创建一个注释 ( @JsonFilterProperties) 以便在 RestController 中与 Spring 一起使用,如下所示:
@JsonFilterProperties({"name", "children.childName"}) // …Run Code Online (Sandbox Code Playgroud) 我创建了一个WindowProc来通知系统时间变化:
constructor TJJWScheduler.Create;
begin
fTimeChangeWnd := Classes.AllocateHWnd(TimeChangeWndProc);
end;
procedure TJJWScheduler.TimeChangeWndProc(var msg: TMessage);
var
i: integer;
begin
case msg.Msg of
WM_TIMECHANGE:
begin
// my things
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
此代码在Windows服务中运行.问题是当我改变系统时间时它不会被触发!
为什么广播消息(WM_TIMECHANGE)没有发送到我的窗口?没有循环还有另一种方法吗?
编辑
我不知道为什么,但我硬编码PeekMessage来处理消息到那个窗口,一切都工作正常.下面的代码解决了我的问题:
var
msg: TMsg;
if PeekMessage(msg, fTimeChangeWnd, WM_TIMECHANGE, WM_TIMECHANGE, PM_REMOVE) then
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
Run Code Online (Sandbox Code Playgroud)
这种解决方法非常奇怪,因为我已经有其他窗口处理消息(通过通用ProcessMessages),只有这个没有处理它的消息.
我可以用Spring MVC做这样的事吗?
@RequestMapping(value = "/{root}")
public abstract class MyBaseController {
@PathVariable(value = "root")
protected ThreadLocal<String> root;
}
@Controller
public class MyController extends MyBaseController {
@RequestMapping(value = "/sayHello")
@ResponseBody
public String hello() {
return "Hello to " + this.root.get();
}
}
Run Code Online (Sandbox Code Playgroud)
当我要求时http://..../roberto/sayHello,我得到这个作为回应:
Hello to roberto
Run Code Online (Sandbox Code Playgroud) java ×4
delphi ×3
spring-mvc ×2
aspectj ×1
build.gradle ×1
deployment ×1
focus ×1
gradle ×1
groovy ×1
jackson ×1
java-8 ×1
json ×1
lambda ×1
maven ×1
proguard ×1
service ×1
spring ×1
spring-boot ×1
tomcat ×1
twebbrowser ×1
war ×1
winapi ×1