小编mah*_*nya的帖子

在Java和Eclipse中管理对库的多个版本的依赖性

在Eclipse环境中,我有项目A.A对项目或库B和C具有依赖性.(如果它们是项目或库则没有区别)B依赖于LibX.v1,C依赖于LibX.v2.在运行时,A将需要B.jar和C.jar.另外,B.jar中的类需要LibX.v1,而C.jar中的类需要LibX.v2.作为同一个库的不同版本,LibX.v1和LibX.v2具有相同的类,因此可能会在运行时从错误的库版本加载类,从而导致很多麻烦.我该如何处理这种情况?

亲切的问候Seref

java versioning jar

7
推荐指数
1
解决办法
8926
查看次数

如何使用OSGI打包和使用现有Java库

在请求帮助管理Java中相同库的不同版本的依赖关系之后,有人建议我应该看看OSGI实现.在最后期限的压力下,我真的可以使用一些帮助来帮助我从无休止的OSGI文档中挖掘出来.我有一个工作的应用程序,它将使用一个新的框架.框架使用我已经使用的不同版本的jar,所以我想将新框架打包为OSGI包.我可以保留我的应用程序,并将OSGI包仅用作JVM中的容器吗?这意味着我将仅使用OSGI包来从JVM的其余部分中隔离一组类,以避免不同版本的类之间发生冲突.换句话说,我想使用OSGI而不将我的所有代码都带到基于OSGI的设置.

亲切的问候Seref

java legacy osgi

7
推荐指数
1
解决办法
855
查看次数

如何使用 ZeroMQ 接收多部分消息?

我无法使用 ZeroMQ C++ 包装器来接收多部分消息。使用 C 版本的相同代码工作得很好,但它会导致一个异常,而 C++ 根本没有解释。多部分处理代码如下:

int _tmain(int argc, _TCHAR* argv[])
{
    zmq::context_t context(1);
    zmq::socket_t socket(context, ZMQ_REP);
    socket.bind("tcp://*:5555");

    while(true) {
        // the following two lines lead to exception
        zmq::message_t request;
        socket.recv(&request);

        //zmq_msg_t message;
        //zmq_msg_init (&message);
        //zmq_recv (socket, &message, 0);   
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它非常简单;这个版本不行。但是如果我注释掉 while 循环中的前两行并取消注释当前注释的(C 版本)代码,它就可以工作。这是 Windows XP sp3、Zeromq 2.1.1 和 Visual Studio 2010 Express。

如果我发送单部分消息,两个版本都可以正常工作。我究竟做错了什么?

c++ zeromq

7
推荐指数
1
解决办法
5355
查看次数

如何在JPA中使用Hibernate的二级缓存?

我正在实现一个基于实体属性值的持久性机制.所有数据库访问都是通过Hibernate完成的.我有一个包含节点路径的表,它非常简单,只是一个id,一个路径(字符串)路径数量很少,大约有几千个.

主表有数百万行,而不是重复路径,我已经规范化了自己的表的路径.以下是插入主表时我想要的行为

1)检查路径表中是否存在路径(通过实体管理器查询,使用路径值作为参数)

2)如果它不存在,插入并获取id(通过实体管理器持久化)

3)将id作为外键值放入主表行,并将其插入主表中.

对于一组域对象,这将发生数千次,对应于主表和其他一些表中的大量行.因此,使用如下的单个事务重复上述步骤:

    EntityTransaction t = entityManager.getTransaction();
    t.begin();
    //perform steps given above, check, and then persist etc..
    t.commit();
Run Code Online (Sandbox Code Playgroud)

当我执行第2步时,它会给整个操作带来巨大的性能下降.它正在乞求缓存,因为过了一段时间,该表最多只有10-20k条目,非常罕见的新插入.我试图用Hibernate做到这一点,并且失去了将近2天.

我正在使用Hibernate 4.1,带有JPA注释和ECache.我试图启用查询缓存,甚至在整个插入过程中使用相同的查询对象,如下所示:

Query call = entityManager.createQuery("select pt from NodePath pt " +
                "where pt.path = :pathStr)");
        call.setHint("org.hibernate.cacheable", true);  
        call.setParameter("pathStr", pPath);
        List<NodePath> paths = call.getResultList();
        if(paths.size() > 1)
            throw new Exception("path table should have unique paths");
        else if (paths.size() == 1){
            NodePath path = paths.get(0);
            return path.getId();
        }
        else {//paths null or has zero size
            NodePath newPath = new …
Run Code Online (Sandbox Code Playgroud)

java caching hibernate jpa nhibernate-caches

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

如何使用pydev调试单个单元测试?

当使用pydev时,ctrl + f9打开一个方便的窗口,让我选择在当前文件中运行哪个单元测试.是否有相同功能的调试版本?

pydev

7
推荐指数
2
解决办法
1227
查看次数

我可以以编程方式分配要使用的linqpad配置文件吗?

Linqpad是唯一一个类似脚本的环境,我可以使用我的大型代码库.它是唯一适合我的环境的原因是其他解决方案(ironpython等)始终无法从app.config正确加载配置,但linqpad.config工作正常

问题是,我有多个配置文件,每次我想将其中一个用于脚本时,我必须转到linqpad安装目录,将正确的配置文件重命名为linqpad.config并重启linq.几乎没有生产力.

我试过通过以下方式设置文件:

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"C:\Shared\app.config"); 
Run Code Online (Sandbox Code Playgroud)

但它没有任何效果.有什么办法可以更改将在Linqpad中的C#程序的Main()方法中使用的配置文件吗?如果我可以调用一个设置要使用的配置文件的函数,然后运行我的其余代码,那就太好了.

linqpad

7
推荐指数
1
解决办法
1155
查看次数

为什么这个unicode字符最终为UTF-16编码的6个字节?

我正在使用接受此问题的答案的代码片段.我只是添加了一个字节数组来使用UTF-16,如下所示:

final char[] chars = Character.toChars(0x1F701);
final String s = new String(chars);
final byte[] asBytes = s.getBytes(StandardCharsets.UTF_8);
final byte[] asBytes16 = s.getBytes(StandardCharsets.UTF_16);
Run Code Online (Sandbox Code Playgroud)

chars 有2个元素,这意味着Java中有两个16位整数(因为代码点在BMP之外).

asBytes 有4个元素,对应32位,这是我们需要用字符表示两个16位整数,所以它是有道理的.

asBytes16有6个元素,这让我很困惑.当32位足以表示此unicode字符时,为什么我们最终得到2个额外字节?

java unicode

7
推荐指数
1
解决办法
449
查看次数

我可以在不使用绝对路径的情况下在Eclipse(CDT)中的项目之间共享源代码吗?

我知道答案中也有类似的问题,其中一些问题是在我输入时提供给我的.然而,它们似乎都没有提供没有绝对路径的解决方案.

我在SVN项目中有两个项目,他们需要以共享方式使用一些.cpp和.h文件.我根本找不到避免绝对路径的方法,这些路径与我查看代码的目录直接相关.尝试使用代码的每个人都很可能必须首先修改这些变量.

没有使用变量(最多),我看不到任何解决方案.我有什么最近的技巧/发展吗?

eclipse share eclipse-cdt relative-path

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

是否有可靠的替代Sun的JVM用于桌面和企业开发?

随着Oracle方面的最新公告,我们已经开始制定一项计划,逐步淘汰从Sun JVM迁移到我们最终将采用的任何可靠和免费的替代方案.

开放式JDK显然将成为一个主要的选择,现在IBM已经宣布了它的重点,但在稳定性和可靠性方面,它需要一些时间来替代Sun现有的JVM.

是否有任何JVM选项,它们为现实生活中的关键任务应用程序提供动力?据我所知,IBM的JVM不能在IBM硬件之外使用.

如果您知道任何可能有助于我们描绘JVM域图片的替代方案,那么您的反馈将非常受欢迎.

我们在Eclipse生态系统方面做了大量工作,并使用jboss应用程序服务器进行了备份,我们现在非常有兴趣知道我们的选择,因为访问Oracle的JVM可能需要许可费.

java jvm sun

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

ASM - 如何从Java字节码名称转换Java类名?

我正在使用ASM(字节码修改库),它以字节码命名格式提供对类型名称的访问,例如,报告String字段具有描述:Ljava/lang/String

我需要为某些类调用Class.forName,但是我需要类型名称的源代码形式,例如java.lang.String.

有没有办法从内部名称转换为Java源格式?

java reflection bytecode java-bytecode-asm

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