小编che*_*kaf的帖子

如何使用JNI访问对象中的数组?

JNI教程,例如教程,很好地介绍了如何访问对象中的原始字段,以及如何访问作为显式函数参数提供的数组(即作为子类jarray).但是如何访问作为字段的字段的Java(原始)数组jobject?例如,我想操作以下Java对象的字节数组:

class JavaClass {
  ...
  int i;
  byte[] a;
}
Run Code Online (Sandbox Code Playgroud)

主程序可能是这样的:

class Test {

  public static void main(String[] args) {
    JavaClass jc = new JavaClass();
    jc.a = new byte[100];
    ...
    process(jc);
  }

  public static native void process(JavaClass jc);
}
Run Code Online (Sandbox Code Playgroud)

相应的C++方面将是:

JNIEXPORT void JNICALL Java_Test_process(JNIEnv * env, jclass c, jobject jc) {

  jclass jcClass = env->GetObjectClass(jc);
  jfieldID iId = env->GetFieldID(jcClass, "i", "I");

  // This way we can get and set the "i" field. …
Run Code Online (Sandbox Code Playgroud)

java-native-interface

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

从Weld中的另一个罐子中注入一个bean

我有两个罐A和B,其中A取决于B.

Jar B有一个类:

@ApplicationScoped
public class MyManagedBean {

 private String user;

 public MyManagedBean(){
  //Constructor necesary for CDI
 }

 @Inject
 public MyManagedBean(@Named("user") String user){
  this.user = user;
 }

 ...
}
Run Code Online (Sandbox Code Playgroud)

Jar A(更确切地说,一个EJB jar)有一个bean:

@ApplicationScoped
public class AnotherManagedBean {

 public AnotherManagedBean(){
  //Constructor necesary for CDI
 }

 @Inject
 public AnotherManagedBean(MyManagedBean bean){
  ...
 }
}
Run Code Online (Sandbox Code Playgroud)

以及带有@Produces方法的配置bean:

@ApplicationScoped
public class ConfigurationBean {

 public ConfigurationBean(){
  //Constructor necesary for CDI
 }

 @Produces
 @Named("user")
 public String getUser(){
  return "myUser";
 }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我使用两个Jars部署EAR时,我遇到了这个异常:

SEVERE: Exception while loading the app …
Run Code Online (Sandbox Code Playgroud)

ear jar cdi jboss-weld

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

如何使用java.sql.Timestamp作为真正的java.util.Date与JPA

我有一个关于日期管理的问题,以毫秒为单位.我理解需要使用TIMESTAMP来存储毫秒:

@Temporal(TIMESTAMP)
@Column(name="DATE_COLUMN", nullable = false)
@Override public java.util.Date getDate() { return this.date; }
Run Code Online (Sandbox Code Playgroud)

但是如果我不能将这个日期与java.util.Date的另一个实例进行比较,除非我注意equals()调用的顺序,因为this.dateinstance是一个java.sql.Timestamp.如何从JPA获取java.util.Date?因为来自JPA的日期,即使方法签名是java.util.Date,实际上也是java.sql.Timestamp的一个实例.

java.util.Date newDate = new Date(this.date.getTime());
this.date.equals(newDate) == false
newDate.equals(this.date) == true
Run Code Online (Sandbox Code Playgroud)

我试图在持久化类中修改我的方法:

@Override
public Date getDate() {
  return this.date == null ? null : new Date(this.date.getTime());
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但是大量数据效率不高.

还有其他选择:

  • 我可以修改我的持久化类的设计,@PostLoad以便在我检索它之后从持久的日期创建一个java.util.Date.

  • 我想知道我是否无法使用ClassTransformer

你有没有遇到过这个问题?我不正确的是什么?处理这个问题的最佳方法是什么?

java datetime persistence jpa

14
推荐指数
2
解决办法
3万
查看次数

java类/异常表的最大大小

我想知道java类的最大大小是多少.如此处所示http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#1546在Code属性结构中,代码长度指定为4字节,因此它是一大堆.我不明白的是异常表的pc属性是2个字节.如果代码长度超过2个字节但异常表只能解决2个字节,它怎么能工作?

java exception class

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

使用@Inject将无状态EJB注入CDI Weld ManagedBean(jboss 6 AS上的JSF 1.2 EJB应用程序)

目前我正在尝试将无状态EJB注入到Jboss 6 AS Final上的CDI管理控制器中.控制器在上下文中管理,可从JSF页面访问.如果我注入无状态bean @EJB正在工作.如果我注入无状态EJB,@Inject我会得到以下异常:

我的控制器:

@Named("TestController")
public class TestController {   
    @Inject
    private TestManagerLocal myTestManager;
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我的无状态豆:

@SuppressWarnings("unchecked")
@Stateless
public class TestManagerBean implements TestManagerLocal {

    @PersistenceContext
    private EntityManager em;
        ...
}
Run Code Online (Sandbox Code Playgroud)

Bean的接口使用@Local注释.

如果我尝试调用myTestManager,我会得到以下异常:

WELD-000079在JNDI中找不到EJB:class de.crud.org $ jboss $ weld $ bean-jboss $ classloader:id ="vfs:$$$ usr $ local $ jboss $ server $ default $ deploy $ test $耳朵"-SessionBean-TestManagerBean _ $$ _ WeldProxy

多谢.

dependency-injection cdi ejb-3.1 jboss-weld

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

如何在VC++中使用set_intersection和std :: set?

我正在尝试用VC10编译VC6项目...我用set_intersection获取了一个错误C2678:我写了一些例子来理解.任何人都可以解释如何编译这个片段?

#include <vector>
#include <algorithm>
#include <iostream>
#include <set>
#include <string>

int main( )
{
    using namespace std;

    typedef set<string> MyType;

    MyType in1, in2, out;
    MyType::iterator out_iter(out.begin()); 

    set_intersection(in1.begin(),in1.end(), in2.begin(), in2.end(), out_iter);
}
Run Code Online (Sandbox Code Playgroud)

输出 :

c:\ program files\microsoft visual\studio 10.0\vc\include\algorithm(4494):错误C2678:'='binary:没有运算符定义,它采用类型为'const std :: basic_string <_Elem的左手操作数, _Traits,_Ax>'(或没有可接受的转换)

如果我用一个std::vector而不是std::set编译成功.可)

stl visual-c++ visual-c++-2010

5
推荐指数
1
解决办法
3103
查看次数

如何在JBoss 6中使用Guava

我正在尝试将Guava用于我的项目,并且在启动JBoss时有很多警告:

WARN  [ClassLoaderManager] Unexpected error during load of:com.google.common.base.Equivalences$Equals: java.lang.IncompatibleClassChangeError: class com.google.common.base.Equivalences$Equals has interface com.google.common.base.Equivalence as super class
WARN  [ClassLoaderManager] Unexpected error during load of:com.google.common.base.FunctionalEquivalence: java.lang.IncompatibleClassChangeError: class com.google.common.base.FunctionalEquivalence has interface com.google.common.base.Equivalence as super class
WARN  [ClassLoaderManager] Unexpected error during load of:com.google.common.collect.AbstractMapBasedMultiset$1$1: java.lang.IllegalAccessError: class com.google.common.collect.AbstractMapBasedMultiset$1$1 cannot access its superclass com.google.common.collect.Multisets$AbstractEntry
[...]
Run Code Online (Sandbox Code Playgroud)

根据我的研究,似乎与旧的Google Collection不兼容.来自community.jboss.org的这个帖子建议使用jboss-scanning.xml.我没有更改,JBoss文档指定此文件用于过滤注释...

你有没遇到过这个问题?

你能建议一个解决方案吗?

java guava jboss6.x

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

JTS Geometry - 应用缓冲区

我试图在JTS拓扑套件中将1000米的缓冲区应用于多边形形状.我已经确定了这样做的方法(参见下面的链接),但我不确定缓冲区方法的距离参数单位是什么.

JTS几何缓冲方法

感谢您查看这个.

jts geospatial

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