请帮忙,我花了一整天的时间来尝试编译我的c ++应用程序.
我的项目包含一个源文件:Foo.cpp.这是它的代码:
#include <jni.h>
#include <com_Foo.h>
JNIEXPORT jint JNICALL Java_com_Foo_add
(JNIEnv * env, jobject obj, jint x, jint y)
{
return x+y;
}
Run Code Online (Sandbox Code Playgroud)
你可以看到我试图使用JNI,但我不认为这与问题有任何关系.这是我在命令行上尝试的内容:
C:\Users\michael\cworkspace\foo>cl -LD Foo.cpp -FeFoo.dll
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
Foo.cpp
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
/dll
/implib:Foo.lib
/out:Foo.dll
Foo.obj
LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'
Run Code Online (Sandbox Code Playgroud)
在我的环境中我设置:
INCLUDE:C:_\include; C:\ frankenstein\includes; C:\ Program Files\Java\jdk1.6.0_24\include; …
我正在尝试从map-reduce作业中编写一个snappy块压缩序列文件.我正在使用hadoop 2.0.0-cdh4.5.0和snappy-java 1.0.4.1
这是我的代码:
package jinvestor.jhouse.mr;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.List;
import jinvestor.jhouse.core.House;
import jinvestor.jhouse.core.util.HouseAvroUtil;
import jinvestor.jhouse.download.HBaseHouseDAO;
import org.apache.commons.io.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
import org.apache.hadoop.hbase.mapreduce.TableMapper;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.io.compress.SnappyCodec;
import org.apache.hadoop.mapred.FileOutputFormat;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat;
import org.apache.hadoop.mapreduce.Job;
import org.apache.mahout.math.DenseVector;
import org.apache.mahout.math.NamedVector;
import org.apache.mahout.math.VectorWritable;
/**
* Produces mahout vectors from House entries in HBase.
*
* …Run Code Online (Sandbox Code Playgroud) 我正在使用cobertura,我对报告中分配给颜色的含义感到困惑.我检查了cobertura网站,以及他们的FAQ和github页面,并搜索了旧的堆栈溢出问题,但我找不到cobertura如何突出显示行的解释.
首先让我说eclipse和firefox之间的报告似乎不同.在日食中,它突出显示绿色,黄色或橙色的整条线条.当在Firefox中显示时,它是不同的.有一个行号,然后是第二个包含整数的列,然后是源行.我看到行号突出显示为绿色的地方,其余部分为红色.我还注意到cobertura从未将实际的源代码行突出显示为绿色,它只是出于某种原因突出显示前两列绿色.
所以让我猜一下这个意思(我不是说这是对的,这是我的猜测):
第一个问题,是上面的正确吗?如果没有,那么请让我知道什么是正确的.
我的第二个问题是:我有一个预期会抛出异常的测试类,它被注释为@Test(expected = IllegalArgumentException.class).测试方法通过,但cobertura将该类中的所有行都突出显示为红色.如果测试通过,为什么cobertura会突出显示此行?有没有办法可以改变这种行为?
第三个也是最后一个问题:如果两个测试方法都达到一行代码,而其中一个测试方法失败,那么代码行是否会突出显示为红色?绿色?或者是其他东西?
我正在尝试使用JNI并获取java.lang.UnsatisfiedLinkError.与其他关于此问题的其他百万问题不同,我在我的路径上有lib,甚至在我删除它时看到异常更改.我确定我创建的DLL有问题,但我不确定是什么.
这是我的java类代码:
package com;
public class Tune {
static {
System.loadLibrary("lala");
}
public static void main(String[] args) {
Tune j = new Tune();
System.out.println("2+6="+j.add(2, 6));
}
native public int add(int x,int y);
}
Run Code Online (Sandbox Code Playgroud)
这是我的javah生成的头文件的删节部分:
/*
* Class: com_Tune
* Method: add
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_com_Tune_add
(JNIEnv *, jobject, jint, jint);
Run Code Online (Sandbox Code Playgroud)
这是我的c ++代码:
#include <jni.h>
#include <com_Tune.h>
JNIEXPORT jint JNICALL Java_com_Tune_add
(JNIEnv * env, jobject obj, jint x, jint y) {
return x+y;
}
Run Code Online (Sandbox Code Playgroud)
这是我从eclipse获得的运行时异常:
Exception in …Run Code Online (Sandbox Code Playgroud) c++ java java-native-interface codeblocks unsatisfiedlinkerror
这是我的代码:
Configuration conf = new Configuration();
conf.addResource(new Path("/etc/hadoop/conf/core-site.xml"));
conf.addResource(new Path("/etc/hadoop/conf/hdfs-site.xml"));
conf.addResource(new Path("/etc/hadoop/conf/mapred-site.xml"));
conf.addResource(new Path("/etc/hadoop/conf/yarn-site.xml"));
FileSystem fs = FileSystem.get(new URI("hdfs://localhost:8020"),conf);
Path path = new Path(hdfsDestination);
FSDataOutputStream outputStream = fs.create(path);
Run Code Online (Sandbox Code Playgroud)
hdfsDestination是/ user/msknapp/insurance,这是输出:
java.io.IOException: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message contained an invalid tag (zero).; Host Details : local host is: "localhost.localdomain/127.0.0.1"; destination host is: "localhost":8020;
at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:764)
at org.apache.hadoop.ipc.Client.call(Client.java:1351)
at org.apache.hadoop.ipc.Client.call(Client.java:1300)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:206)
at com.sun.proxy.$Proxy9.create(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:186)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
at com.sun.proxy.$Proxy9.create(Unknown …Run Code Online (Sandbox Code Playgroud) 当我做'ps aux'时,很多线都比我的终端宽度长,而不是换行到下一行.起初我以为这是我的stty设置,但是我注意到像netstat这样的其他命令会在我的终端中换行.我宁愿不被迫使用更少或一些其他寻呼机.
有人知道线条没有包裹的原因吗?以及如何解决?
我正在使用eclipse Kepler(企业版),Java 8和M2Eclipse并尝试创建一个Web应用程序.我已经去帮忙了 - > eclipse marketplace并安装了这两个补丁:
这些补丁解决了我的很多问题,但仍有一个问题.我在eclipse中做了一个maven - > update,它除了我工作区中唯一的web应用程序外,还更新了我的所有项目.它给我一个弹出消息,说"项目方面java的1.8版本不存在"
我打开了项目属性并单击了Project Facets.果然,java facet最大版本是1.7.所以我想知道为什么我的其他项目没有同样的问题.我查看了其他项目中的属性,发现它们根本没有使用Project Facets.我想这可能是因为我使用标准版的eclipse而不是企业版制作了所有以前的项目.
所以我想我有几个问题.我如何让eclipse识别java facet 1.8?有没有办法让我的网络应用程序不使用Project Facets?我应该将Project Facets添加到其他项目中吗?
我在ubuntu VM上以伪分布式模式运行hadoop.我最近决定增加可用于我的VM的内核和内核数量,这似乎完全搞砸了hdfs.首先,它是在安全模式下我手动释放使用:
hadoop dfsadmin -safemode离开
然后我跑了:
hadoop fsck -blocks
几乎每个街区都腐败或缺失.所以我想,这只是为了我的学习,我删除了"/ user/msknapp"中的所有内容以及"/var/lib/hadoop-0.20/cache/mapred/mapred/.settings"中的所有内容.所以块错误消失了.然后我尝试:
hadoop fs -put myfile myfile
得到(删节):
12/01/07 15:05:29 WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/msknapp/myfile could only be replicated to 0 nodes, instead of 1
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1490)
at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:653)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
12/01/07 15:05:29 WARN hdfs.DFSClient: Error Recovery for block null bad datanode[0] nodes == null
12/01/07 15:05:29 WARN hdfs.DFSClient: Could not get block locations. Source file "/user/msknapp/myfile" - Aborting...
put: java.io.IOException: File /user/msknapp/myfile could only be replicated …Run Code Online (Sandbox Code Playgroud) 我有这行代码(行是字符串类型):
char* p = line.data;
Run Code Online (Sandbox Code Playgroud)
在你回答之前,我已经弄明白我做错了什么,最后我需要一些括号.我想问你的是我应该如何解释我得到的错误以供将来参考:
error: cannot convert ‘std::basic_string<_CharT, _Traits, _Alloc>::data<char, std::char_traits<char>, std::allocator<char> >’ from type ‘const char* (std::basic_string<char>::)()const noexcept (true)’ to type ‘char*’
所以首先我要问,这可能更令人困惑吗?你是如何在C++开发人员处理这样的事情的?感谢天堂的高级语言吧?好的,所有这些问题都只是修辞.
好的,所以我现在已经读了十几次这个错误.我还查看了字符串数据方法文档,它确实说它返回一个char*.所以我对以下内容感到困惑:
参考这个:
basic_string<_CharT, _Traits, _Alloc>
Run Code Online (Sandbox Code Playgroud)根据basic_string文档,它有一个模板参数,但是这个错误似乎说有三个:_CharT,_Traits和_Alloc.为什么这个基本字符串有三个模板参数,当文档说它有一个?我想我不明白如何解释该文档或该错误消息.
然后看起来数据部分也有模板参数,
...::data<char, std::char_traits<char>, std::allocator<char> >
Run Code Online (Sandbox Code Playgroud)但根据'data'方法文档,它的定义如下:
const char* data() const noexcept;
Run Code Online (Sandbox Code Playgroud)
我在该定义中没有看到任何模板参数.为什么错误消息显示所有这些模板参数?
然后它变得更加混乱,错误消息说它正在尝试从类型转换:
const char* (std::basic_string<char>::)()const noexcept (true)
Run Code Online (Sandbox Code Playgroud)所以我认为这是C++描述函数类型的方式,是吗?为什么它以括号中的单词结尾?
所以我想我主要是想弄清楚为什么C++异常具有我在任何文档中都没有看到的所有这些奇怪的模板参数.
我正在使用Spring注释和hibernate来创建DAO.我使用的是Spring 3.2.5和hibernate 4.3.3.出于某种原因,我一直得到这个例外:
org.hibernate.HibernateException:如果没有活动事务,则get无效
这是我的春季应用程序上下文的相关部分:
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- Pick up the HibernateHouseDAO spring bean -->
<context:component-scan base-package="jinvestor.jhouse.download" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>jinvestor.jhouse.core.HouseEntity</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
<!-- <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop> -->
</props>
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${dataSource.driver}" />
<property name="url" value="${dataSource.url}" />
<property name="username" value="${dataSource.username}" />
<property name="password" value="${dataSource.password}" />
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
Run Code Online (Sandbox Code Playgroud)
这是我的DAO:
@Repository("dao")
@Profile("mysql")
@Transactional
public class …Run Code Online (Sandbox Code Playgroud)