小编RMo*_*sey的帖子

用maven建立可执行jar?

我正在尝试使用maven为一个名为"logmanager"的小型家庭项目生成一个可执行jar,就像这样:

如何使用Maven创建具有依赖关系的可执行JAR?

我将那里显示的代码段添加到pom.xml中,然后运行mvn assembly:assembly.它在logmanager/target中生成两个jar文件:logmanager-0.1.0.jar和logmanager-0.1.0-jar-with-dependencies.jar.当我双击第一个jar时出现错误:

Could not find the main class: com.gorkwobble.logmanager.LogManager. Program will exit.
Run Code Online (Sandbox Code Playgroud)

当我双击jar-with-dependencies.jar时出现稍微不同的错误:

Failed to load Main-Class manifest attribute from: C:\EclipseProjects\logmanager\target\logmanager-0.1.0-jar-with-dependencies.jar
Run Code Online (Sandbox Code Playgroud)

我复制并粘贴了路径和类名,并检查了POM中的拼写.我的主要类从eclipse启动配置启动.有人可以帮我弄清楚为什么我的jar文件不会运行?另外,为什么有两个罐开始?如果您需要更多信息,请与我们联系.

这是完整的pom.xml,供参考:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.gorkwobble</groupId>
  <artifactId>logmanager</artifactId>
  <name>LogManager</name>
  <version>0.1.0</version>
  <description>Systematically renames specified log files on a scheduled basis. Designed to help manage MUSHClient logging and prevent long, continuous log files.</description>
  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.2</version>
            <!-- nothing here -->
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2-beta-4</version>
            <configuration>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
              <archive>
                <manifest>
                  <mainClass>com.gorkwobble.logmanager.LogManager</mainClass> …
Run Code Online (Sandbox Code Playgroud)

java eclipse build-process maven-2 executable-jar

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

为什么弃用EhCacheProvider?

我正在配置我的hibernate项目以使用二级缓存提供程序,以便我可以利用查询缓存.

我在ehcache中添加了一个依赖项:

   <dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache-core</artifactId>
    <version>2.2.0</version>
   </dependency>
Run Code Online (Sandbox Code Playgroud)

我认为我想要使用的提供程序类是:

net.sf.ehcache.hibernateEhCacheProvider
Run Code Online (Sandbox Code Playgroud)

当我在eclipse中查看引用的库时,我会看到@Deprecated注释EhCacheProvider,同时也会看到注释SingletonEhCacheProvider.是什么赋予了?我可以使用最新的替代供应商吗?

我正在使用hibernate版本3.4.0.GA,以防万一.

caching hibernate terracotta ehcache

19
推荐指数
4
解决办法
2万
查看次数

Hibernate条件查询不同对象的不同属性

假设我有以下课程:

class A {
 B getB();
 C getC();
}

class B {
 String getFoo();
}

class C {
 int getBar();
}
Run Code Online (Sandbox Code Playgroud)

我想在A上过滤标准,在不同的子类属性上有两个过滤器,例如:

Criteria criteriaA = session.createCriteria(A.class);
Criteria criteriaB = criteriaA.createCriteria("b").add(Restrictions.eq("foo", "Something"));
Criteria criteriaC = criteriaA.createCriteria("c").add(Restrictions.eq("bar", 0));
Run Code Online (Sandbox Code Playgroud)

我想要做的是使用"或"子句组合criteriaB和criteriaC,如:

//this does not work
criteriaA.add(Restrictions.disjunction().add(criteriaB).add(criteriaC));
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?我在这里绊倒了一些API.

java hibernate criteria

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

从ClearCase快照中删除文件的"正确"方法是什么?

当我从快照视图中删除文件时,下次我在ClearCase Explorer中查看快照时,会显示"??" 签出但删除图标.当我在快照上运行"查找修改的文件"时,不会显示已删除的文件.在快照上运行"更新视图"会导致ClearCase将丢失的文件重新复制回我的视图.

我想要发生的是:当我从快照中删除文件并进行更新时,应该从视图中删除该文件,就像我从动态视图中通过ClearCase删除它一样.实现这一目标的最佳方法是什么?

我宁愿避免大量定制我的ClearCase环境.如果有一种"标准"的方式来做到这一点,我想尝试一下.如果cleartool可以显示符合此法案的所有文件的搜索结果,那么这对我的目的来说已经足够了.

version-control clearcase snapshot-view delete-file

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

IE e.keyCode - 如何区分&符号和上箭头?

我正在尝试修复jQuery UI小部件上的一个非常奇怪的javascript行为.IE7(win XP),jQuery 1.2.6(是的,它是旧版本).

小部件是一个组合框,它捕获键盘事件并具有箭头键的特殊行为.

当我尝试在弹性框输入字段中键入"&"字符时,我会遇到奇怪的行为.

flexbox有一些代码,如:

//initialization
$myInputElement.keypress($.flexbox.process_key);
$.flexbox.process_key = function process_key(e) {
    $.flexbox.flexboxFromInput(this).processKey(e);
    return true;
};

//on the flexbox object's prototype:
...
    processKey: function processKey(e) {
        var mod = 0;
            if (typeof (e.ctrlKey) !== 'undefined') {
                if (e.ctrlKey) mod |= 1;
                if (e.shiftKey) mod |= 2;
            } else {
                if (e.modifiers & Event.CONTROL_MASK) mod |= 1;
                if (e.modifiers & Event.SHIFT_MASK) mod |= 2;
            }
            ...
            switch (e.keyCode) {
                   case 38: // up
                       this.prevResult();
                       break;
                   case 40: // down …
Run Code Online (Sandbox Code Playgroud)

javascript jquery keycode keypress internet-explorer-7

8
推荐指数
1
解决办法
2331
查看次数

如何自动将ICS会议添加到管理器的日历中?

我们的java应用程序使用ical4j生成ICalendar文件,并将它们作为HTML电子邮件通知的一部分发送给用户.几个用户(会议的组织者)报告会议的"接受","拒绝"等按钮显示为灰色,并且不可点击.会议未添加到组织者的日历中.

如何强制为管理器添加会议?

我暂时配置服务器以将.ics文件作为附件(而不是内联)发送,以便我可以通过基于Web的ICalendar验证器运行它.验证器给了我一个警告,说明Version属性应该是第一个属性,但没有发现任何其他问题.

除了组织者之外,ICalendar通常适用于每个用户.

我能够在自己的Outlook帐户上重现该问题.我注意到,如果我通过gmail邮件服务器发送会议通知,它会正常工作; 但是,当它来自我们的内部Outlook服务器时,它不会被添加到日历中.

灰显的会议控件下方会显示一条消息:"作为会议组织者,您无需回复​​此会议."

我们的系统生成的示例ICalendar文件:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//MyCompany//Product//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTAMP:20101202T210423Z
UID:77B17E9B-BE02-476E-816B-ED9558EE7D2A
DTSTART:20101230T133000
DTEND:20101230T143000
SUMMARY:Review Meeting for A1 CI Review #123456
LOCATION:BLDG - 123
CREATED:20101202T210423Z
LAST-MODIFIED:20101202T210423Z
TZID:America/New_York
ORGANIZER;CN="ORGANIZER, THE";SENT-BY="mailto:noemail@mycompany.com":mailto:myemail@mycompany.com
ATTENDEE;ROLE=REQ-PARTICIPANT;CN="ATTENDEE, SOME":mailto:noemail@mycompany.com

END:VEVENT
END:VCALENDAR
Run Code Online (Sandbox Code Playgroud)

编辑:

我尝试将会议组织者添加为"可选"参与者.没有骰子; 同样的行为.

再次编辑这个问题以反映我在这个问题上的进展.

icalendar outlook outlook-2007 meeting-request ical4j

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

如何在本地访问 nginx 入口?

我无法连接到使用 nginx ingress 运行的应用程序(Docker Desktop win 10)。

nginx-ingress 控制器 pod 正在运行,应用程序运行良好,我已经创建了一个入口。但是,当我尝试在本地主机上连接到我的应用程序时,出现“连接被拒绝”。

我在日志中看到这个错误:

[14:13:13.028][VpnKit            ][Info   ] vpnkit.exe: Connected Ethernet interface f6:16:36:bc:f9:c6

[14:13:13.028][VpnKit            ][Info   ] vpnkit.exe: UDP interface connected on 10.96.181.150

[14:13:22.320][GoBackendProcess  ][Info   ] Adding vpnkit-k8s-controller tcp forward from 0.0.0.0:80 to 10.96.47.183:80
[14:13:22.323][ApiProxy          ][Error  ] time="2019-12-09T14:13:22-05:00" msg="Port 443 for service ingress-nginx is already opened by another service"
Run Code Online (Sandbox Code Playgroud)

我认为端口 443 被另一个应用程序使用,可能是 zscaler security 或 Skype。摘自netstat -a -b

 [svchost.exe]
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       16012
 [com.docker.backend.exe]
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       8220
Run Code Online (Sandbox Code Playgroud)

我不知道如何使入口工作。请帮忙!

我的入口: …

docker kubernetes nginx-ingress docker-desktop

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

wave.getState()返回null

当我尝试在我的Google Wave小工具中调用wave.getState()时,我返回null(没有状态对象).如何初始化Wave状态对象?我在Wave Sandbox工作.

我的ModulePrefs包含以下内容:

    <Require feature="wave" />
    <Require feature="rpc"/>
Run Code Online (Sandbox Code Playgroud)

我在搜索修复程序时从一些谷歌小组发布了"rpc"功能,但它似乎没有任何帮助.

小工具包含一个jQuery插件,它定义了我使用的类(未显示),将事件处理程序附加到以编辑模式显示的链接,并使用google wave小工具初始化程序设置回调方法:

$.fn.extend({
     $.gork.InitPass.newButtonClick = function newButtonClick() {
           var jer = new $.gork.InitPass.Player('Jeremias', 12, 2);
           var delta = {};
           delta[jer.name] = jer.serialize();
           wave.getState().submitDelta(delta);
     };

    $.gork.InitPass.modeCallback = function modeCallback() {
           var state = wave.getState();
           var mode = wave.getMode();
           $.gork.InitPass.getContainer().ipCombatState(state, (mode == wave.Mode.EDIT));
    };

    $.gork.InitPass.stateCallback = function stateCallback() {
      $.gork.InitPass.getContainer().ipCombatState(
      wave.getState(), (wave.getMode() == wave.Mode.EDIT));
      alert('state');
    };

    $.gork.InitPass.init = function init() {
     if (wave && wave.isInWaveContainer()) {
       var mode = wave.getMode();
       $('.gork-ip-container').ipCombatState(null, (mode …
Run Code Online (Sandbox Code Playgroud)

javascript null jquery google-wave getstate

7
推荐指数
0
解决办法
591
查看次数

无法连接到在Docker中运行的tomcat(连接被拒绝)

我是Docker的新手,我正在尝试运行默认的tomcat映像.我看到容器正在运行,但当我尝试从我的Web浏览器中点击它时,我得到"CONNECTION REFUSED".

这里发生了什么?

细节

我在Windows 7 PC上安装了Docker Toolbox.我从较旧版本的boot2docker迁移了我的boot2docker VM.(它没有太多内容......只是"你好世界"的形象.)

在Docker Quickstart终端中,我能够使用以下命令启动我的新tomcat容器:

docker run -i -p 8080:8080 --rm tomcat:8-jre8
Run Code Online (Sandbox Code Playgroud)

我能够使用以下命令验证tomcat已启动并正在运行:

docker ps
docker exec -i <containerId> bash
Run Code Online (Sandbox Code Playgroud)

然后,在bash shell中:

curl localhost:8080
Run Code Online (Sandbox Code Playgroud)

从这个卷曲,我得到了预期的HTML响应.

但是,如果我直接从Docker Quickstart终端运行curl命令:

curl localhost:8080
Run Code Online (Sandbox Code Playgroud)

......我得到"拒绝连接".

现在这里有些令人费解......如果我跑了

boot2docker ip
Run Code Online (Sandbox Code Playgroud)

...它给我一个"boot2docker-vm"没有运行的错误.当boot2docker VM关闭时,我的容器如何运行?这里有一些我真的不明白的事情.

如果我运行"boot2docker up",我可以获得一个IP地址,但我仍然无法从该IP地址访问tomcat.

tomcat windows-7-x64 docker boot2docker

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

在这种情况下,如何纠正功能嫉妒?

我有一些看起来像的代码:

class Parent {
 private Intermediate intermediateContainer;
 public Intermediate getIntermediate();
}

class Intermediate {
 private Child child;
 public Child getChild() {...}
 public void intermediateOp();
}

class Child {
 public void something();
 public void somethingElse();
}

class Client {
 private Parent parent;

 public void something() {
  parent.getIntermediate().getChild().something();
 }

 public void somethingElse() {
  parent.getIntermediate().getChild().somethingElse();
 }

 public void intermediate() {
  parent.getIntermediate().intermediateOp();
 }
}
Run Code Online (Sandbox Code Playgroud)

我明白这是"功能羡慕"代码气味的一个例子.问题是,解决它的最佳方法是什么?我的第一直觉是将这三种方法放在父母身上:

parent.something();
parent.somethingElse();
parent.intermediateOp();
Run Code Online (Sandbox Code Playgroud)

...但我觉得这个重复代码,并且混乱了Parent类的API(已经很忙).

我是否要存储getIntermediate()和/或getChild()的结果,并保留自己对这些对象的引用?

java oop refactoring

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