小编ton*_*nga的帖子

如何从Jackson JSON中的ObjectMapper直接写入JSON对象(ObjectNode)?

我正在尝试输出Jackson JSON中的JSON对象.但是,我无法使用以下代码获取JSON对象.

public class MyClass {

        private ObjectNode jsonObj;

        public ObjectNode getJson() {
              ObjectMapper mapper = new ObjectMapper();
              // some code to generate the Object user...
              mapper.writeValue(new File("result.json"), user);
              jsonObj = mapper.createObjectNode();
              return jsonObj;
        }

}
Run Code Online (Sandbox Code Playgroud)

程序运行后,该文件result.json包含正确的JSON数据.但是,jsonObj是空的(jsonObj={}).我查找了ObjectMapper的Javadoc,但找不到一种简单的方法来写入ObjectNode(Jackson中的JSON对象).没有ObjectMapper像下面这样的方法:

public void writeValue(ObjectNode json, Object value)
Run Code Online (Sandbox Code Playgroud)

如何ObjectNode直接写入ObjectMapper

java json jackson

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

使用char数组进行C struct初始化

我有一个C结构定义如下:

struct Guest {
   int age;
   char name[20];
};
Run Code Online (Sandbox Code Playgroud)

当我创建一个Guest变量并使用以下内容对其进行初始化时:

int guest_age = 30;
char guest_name[20] = "Mike";
struct Guest mike = {guest_age, guest_name};
Run Code Online (Sandbox Code Playgroud)

我得到了关于第二个参数初始化的错误,它告诉我guest_name不能用于初始化成员变量char name[20].

我可以这样做来初始化所有:

struct Guest mike = {guest_age, "Mike"};
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的.我想按变量初始化所有字段.如何在C中执行此操作?

c struct char

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

列表推导中的Python异常处理

我有一个调用的Python函数plot_pdf(f)可能会抛出错误.我使用列表推导来迭代这个函数上的文件列表:

[plot_pdf(f) for f in file_list]
Run Code Online (Sandbox Code Playgroud)

我想使用try-except块在迭代循环期间跳过任何可能的错误并继续下一个文件.以下代码在Python列表理解中进行异常处理的正确方法是什么?

try:
    [plot_pdf(f) for f in file_list]  # using list comprehensions
except:
    print ("Exception: ", sys.exc_info()[0])
    continue
Run Code Online (Sandbox Code Playgroud)

上面的代码会终止当前的迭代并进入下一次迭代吗?如果我不能使用列表推导来捕获迭代期间的错误,那么我必须使用正常for循环:

for f in file_list:
    try:
        plot_pdf(f)
    except:
        print("Exception: ", sys.exc_info()[0])
        continue
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以使用try-except在列表理解中进行异常处理.

python exception-handling list-comprehension

10
推荐指数
3
解决办法
8427
查看次数

如何在Jersey客户端的DELETE请求中发送封装数据?

我在Jersey 2.x中有以下服务器端代码:

@Path("/store/remove/from/group")
@DELETE
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_PLAIN)
public Response removeStoresFromGroup(@FormParam("storeName") List<String> storeNames, @FormParam("groupName") String groupName) {
    //......
}
Run Code Online (Sandbox Code Playgroud)

在客户端,我想使用Jersey 2.x客户端向上述Web服务发送删除请求.但是,从Jersey客户端API的文档中,我没有找到如何在DELETE请求中包含以下数据:

WebTarget webTarget = client.target("/store/remove/from/group");
MultivaluedMap<String, String> formData = new MultivaluedHashMap<String, String>();
List<String> storeName = new ArrayList<String>();
storeName.add("Store1");
storeName.add("Store2");
storeName.add("Store3");

formData.addAll("storeName", storeName);
formData.add("groupName", "Group A");

Response response = webTarget.request().accept(MediaType.TEXT_PLAIN).delete();   //The delete() method doesn't take any entity body in the request.
Run Code Online (Sandbox Code Playgroud)

从Jersey客户端API,SyncInvoker该类不支持将delete实体主体作为其参数的方法.所以我只能使用POST或PUT将数据发送到服务器,如下所示(但不是DELETE):

Response response = webTarget.request().accept(MediaType.TEXT_PLAIN).post(Entity.form(formData)); 
Run Code Online (Sandbox Code Playgroud)

但我想使用DELETE请求,因为请求正在删除一些资源.如何通过Jersey客户端发送带有一些实体数据的DELETE请求?

java rest jax-rs jersey

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

如何使用getClass()来判断Object是否为数字?

我想动态地判断Java中的Object是否为数字.我的代码如下:

if(obj.getClass().equals(Number.class)) {
    attributeTypeStr = "Numeric";
} else {
    attributeTypeStr = "Non-Numeric";
}
Run Code Online (Sandbox Code Playgroud)

Object obj可以是任何数值类型,如Integer, Float, Double等,但是,当我与测试它Integer/Float/Double,则attributeTypeStr总是返回"Non-Numeric".我想这是因为Integer/Float/Double是子类NumberNumber.class不相等Double.class.我可以用类似的东西

if(obj.getClass().equals(Integer.class) || obj.getClass().equals(Float.class) || obj.getClass().equals(Double.class))
Run Code Online (Sandbox Code Playgroud)

但它看起来太冗长了.那么有一个简单的方法吗?

java reflection

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

MinGW还是Cygwin GCC?

我想在Windows中为Eclipse IDE安装GCC编译器.我知道有两种选择:MinGW GCC或Cygwin GCC.哪一个更适合Eclipse CDT?任何经验或建议将不胜感激.

eclipse gcc cygwin mingw

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

使用 Spring 和 Glassfish 的 JtaTransactionManager 的 JNDI 初始上下文

我想在我的应用程序中使用 JTA 事务管理器。我正在使用 Spring 和 Glassfish。我想使用 JNDI 查找来获取JtaTransactionManager实例。我的 Spring bean 配置JtaTransactionManager设置如下:

<tx:annotation-driven transaction-manager="jtaTransactionManager"/>

<bean id="jtaTransactionManager"
    class="org.springframework.transaction.jta.JtaTransactionManager">
    <property name="transactionManagerName" value="java:comp/TransactionManager"/>
    <property name="userTransactionName" value="java:comp/UserTransaction"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

但是当我运行程序时,却报错:

Caused by: org.springframework.transaction.TransactionSystemException: JTA UserTransaction is not available at JNDI location [java:comp/UserTransaction]; nested exception is javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
Run Code Online (Sandbox Code Playgroud)

它与未初始化的 JNDI 上下文关联。因此,我添加了一个资源文件jndi.properties,其中添加了上面报告的缺失的初始上下文:

java.naming.factory.initial=???
Run Code Online (Sandbox Code Playgroud)

但问题是:我应该在上面的 JNDI 初始上下文字段中放入什么,才能通过 JNDI 查找获取 Glassfish 事务管理器?我搜索了许多来源,但没有找到这条信息。官方文件 …

java spring jndi jta glassfish

6
推荐指数
0
解决办法
2895
查看次数

如何知道侦听器是否在JMS中获取消息?

我正在使用Spring JMS和ActiveMQ异步地将消息从一个发送者发送到多个侦听器.所有侦听器都订阅ActiveMQ主题,以便可以将消息传递给它们.我想知道特定的侦听器是否从发件人那里获取了消息.有没有办法实现这个目标?

编辑:添加了JMS发送方和侦听器类

这是我的邮件发件人类:

public class CustomerStatusSender {
    private JmsTemplate jmsTemplate;
    private Topic topic;

    public void setJmsTemplate(JmsTemplate jmsTemplate) {
        this.jmsTemplate = jmsTemplate;
    }

    public void setTopic(Topic topic) {
        this.topic = topic;
    }

    public void simpleSend(final String customerStatusMessage) {
        jmsTemplate.send(topic, new MessageCreator() {
            public Message createMessage(Session session) throws JMSException {
                TextMessage message = session.createTextMessage("hello from sender.");
                message.setStringProperty("content", customerStatusMessage);
                return message;
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

这是消息监听器之一:

public class CustomerStatusListener implements MessageListener {
    public void onMessage(Message message) {
        if (message instanceof TextMessage) { …
Run Code Online (Sandbox Code Playgroud)

java activemq-classic jms spring-jms

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

Spring事务管理:无法解析bean'transactionManager'的引用

我有以下bean配置XML文件(beans.xml):

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="createWithContactInfo"/>
    </tx:attributes>
</tx:advice>

<aop:config>
    <aop:pointcut id="createOperation"
        expression="execution(* com.example.db.CustomerJDBCTemplate.createWithContactInfo(..))" />
    <aop:advisor advice-ref="txAdvice" pointcut-ref="createOperation" />
</aop:config>

<!-- Initialization for data source -->
<bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/Customer" />
    <property name="username" value="myusername"/>
    <property name="password" value="12345"/>
    <property name="initialSize" value="10"/>
</bean>

<!-- Definition for customerJDBCTemplate bean -->
<bean id="customerJDBCTemplate" class="com.example.db.CustomerJDBCTemplate">
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="transactionManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>
Run Code Online (Sandbox Code Playgroud)

但是,当我执行以下测试以从应用程序上下文实例化bean时,它会在第一行抛出异常:

public class MyTest {
    public static void main(String[] args) …
Run Code Online (Sandbox Code Playgroud)

java aop spring transactions spring-transactions

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

如何在两个项目之间共享代码?

我有两个名为A和B的Java项目.它们都是作为war文件部署的Web应用程序.我分别在Eclipse工作区中创建它们.项目B使用项目A中的一个类命名MusicMapper.我加入了一个项目作为建议项目在Eclipse B的构建路径这篇文章.所以现在项目B可以编译而没有任何错误,MusicMapper通过在项目B中导入类,可以在项目B中看到类:

import com.projectA.MusicMapper;
Run Code Online (Sandbox Code Playgroud)

在我启动项目B的Web应用程序之前,一切似乎都没问题.但是,当我启动项目B并调用引用MusicMapper项目A中的类的代码时,我收到了以下运行时错误:

java.lang.ClassNotFoundException: com.projectA.MusicMapper
Run Code Online (Sandbox Code Playgroud)

所以这个错误似乎是由com.projectA.MusicMapper从项目A导入的未完成的类引起的.因为我已经将项目A添加到项目B构建路径并且项目B编译没有任何错误,为什么它在运行时报告此错误?

我采取的另一种方法是:我还尝试在项目B中使用以下Maven导入pom.xml:

    <dependency>
        <groupId>com.projectA</groupId>
        <artifactId>projectA</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <scope>system</scope>
        <systemPath>/path/to/projectA.jar</systemPath>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

projectA.jar我从项目A导出的jar文件在哪里.但它仍然给了我相同的东西ClassNotFoundException.如何让项目A中的类可以被项目B使用?似乎我尝试过的这两种方法都不起作用.

java eclipse classpath maven

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