小编Pie*_*Jan的帖子

不支持的major.minor版本51.0,但一切都设置为JDK 1.6

我有一个Maven Eclipse应用程序,我正在尝试使用以下命令运行命令提示符:

java -cp target/classes;"target/dependency/*" com.example.Main
Run Code Online (Sandbox Code Playgroud)

不幸的是,它抛出一个错误:

UnsupportedClassVersionError : unsupported major.minor version 51.0
Run Code Online (Sandbox Code Playgroud)

我做了一些挖掘,发现它与在较新版本的JDK上编译的应用程序有关,而不是它运行的JRE.显然,51意味着它是为1.7而构建的,但我的计算机上没有JDK 7 ......

所以我确保一切都设置为1.6版:

root包含的system.properties文件

java.runtime.version=1.6
Run Code Online (Sandbox Code Playgroud)

添加了maven属性

<java.version>1.6</java.version>
Run Code Online (Sandbox Code Playgroud)

在我的pom.xml中指定了maven编译器插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我使用返回的命令java -version检查了我的java版本

Java version "1.6.0_38"
Java(TM) SE Runtime Environment (build 1.6.0_38-b05)
Java HotSpot(TM) 64-bit Server VM (build 20.13-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)

设置maven-compiler-plugin后,我的项目更新导致Eclipse自动将编译器级别设置为1.6,项目方面级别为1.6,并将JavaSE-1.6 jre系统库添加到我的项目中.

所以我完全不知道这个JDK 1.7的来源.我从来没有在这台计算机上安装JDK 1.7 ...

另外,最初,maven-compiler-plugin不存在所以它是用1.5构建的.但我做了一个mvn clean install,然后一个mvn package,然后在所有设置调整后再次尝试该命令,它仍然抛出相同的错误.

java unsupported-class-version

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

ThreadLocal Singleton

我在GlassFish上运行RESTful java后端.附加一个HTML5/JS前端,我可以将其放入webapp项目(然后将后端包含为依赖项),或者在不同位置的IIS Web服务器上运行.CORS不是问题.无论如何解决以下问题:

情况:

  1. User1登录,数据库路径设置为'db/user1 /'
  2. User1将"值1"插入数据库
  3. User2登录,数据库路径设置为'db/user2 /'
  4. User1尝试从数据库中删除"值1"

User1将无法从db/user1中删除值1,因为数据库路径已更改为db/user2且该数据库中没有值1.

public class DataAccess{
    private static DataAccess dataaccess;
    private String databasepath;

    public static DataAccess getInstance() {
        if (dataaccess == null) {
            dataaccess = new DataAccess();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何修改getInstance()方法以使其充当单例,但仅在该用户的线程内?我看到了一些名为threadlocal的东西,但没有完全理解它,这可能是一个解决方案吗?

任何帮助肯定是值得赞赏的.

java singleton thread-local

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

结合Neo4J和MongoDB:一致性

这些天我正在做很多实验,我想做的其中一件事就是结合两个流行的NoSQL数据库,即Neo4j和MongoDB.仅仅因为我觉得它们完美地相互补充.Neo4j中的第一类公民,即关系,是MongoDB中缺少的,而MongoDb允许我不在我的节点属性中放入大量数据.

所以我试图在Java应用程序中使用Neo4j Java REST绑定和MongoDB Java驱动程序将两者结合起来.我的所有域实体都有一个唯一的标识符,我存储在两个数据库中.其他数据存储在MongoDB中,实体之间的关系存储在Neo4J中.例如,两个数据库都包含userid,MongoDB包含配置文件信息,Neo4J包含友谊关系.使用我编写的自定义数据访问层,这与我想要的完全一样.它很快.

但是......当我想创建一个用户时,我需要在Neo4j中创建一个节点,在MongoDB中创建一个文档.不一定是问题,除了Neo4j是事务性的而MongoDB不是.如果两者都是事务性的,我会在其中一个事务失败时回滚这两个事务.但由于MongoDB不是事务性的,我不能这样做.

我如何确保每当我创建用户时,既创建节点又创建文档,或者两者都不创建.我不想最终得到一堆没有匹配节点的文档.

最重要的是,我不仅希望我的组合数据库交互符合ACID,我还希望它是线程安全的.GraphDatabaseService和MongoClient/DB都是由单例提供的.

我发现了一些关于在MongoDB中创建"交易文档"的东西,但我真的不喜欢这种方法.我想要像neo4j beginTx,tx.success,tx.failure,tx.finish设置一样漂亮和干净.理想情况下,我可以在同一个try/catch/finally块中实现.

我是否应该切换到CouchDB,这看起来似乎是事务性的?

编辑:经过一些评论引发的更多研究后,我开始意识到CouchDB也不适合我的特定需求.为了澄清,Neo4j部分是一成不变的.文档存储数据库不像Java库那么长.

transactions consistency mongodb neo4j

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

SOLR 是否支持渗透

ElasticSearch 具有用于预期搜索的渗透器。SOLR 是否具有类似的功能,您可以预先定义查询?如果没有,是否有一种有效的方法可以在现有的 SOLR 功能之上自己实现?

solr elasticsearch

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

Neo4j中的嵌套事务

为了记录,我使用的是Neo4j 2.0.0-M02.

我目前有一种方法可以在其用户ID上搜索标签为"User"的节点,该用户ID作为节点属性"id"存储在图中.这一切都发生在事务中,因为它会自动关闭ResourceIterator.

现在,我想在两个用户之间创建一个关系.我只拥有他们的用户ID.现在,我显然希望重用按其ID搜索用户的方法.我有三种方法可以想到.

第一个是显而易见的.使用现有方法检索两个节点.比调用创建它们之间关系的方法.显然这也发生在一个事务中,所以这需要三个事务.效率不高.

第二个是在创建关系的新方法中重用代码(而不是方法).这样,我可以在一个事务中完成所有操作,但我复制的代码对于开发人员来说并不是一个很好的实践.

第三个是在创建关系的新方法的事务内调用现有方法两次.这样我的代码仍然可以重用,但我不确定嵌套事务在Neo4J中是如何工作的.是否会忽略现有方法的交易,因为已有现有交易?这将解决我的问题.

如果没有,我必须重新考虑我管理交易的地方.我知道在服务中管理它们通常比在DAO中更好,但我想将Neo4j的东西从我的服务类中保留下来.

transactions nested-transactions neo4j

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

Pig UDF没有找到WritableComparable

尝试使用maven(或使用我的IDE IntelliJ)编译我的Pig UDF时出现以下错误:

cannot access org.apache.hadoop.io.WritableComparable
class file for org.apache.hadoop.io.WritableComparable not found
Run Code Online (Sandbox Code Playgroud)

所以我想我会将hadoop-core的依赖添加到我的POM文件中但仍然没有变化,尽管我检查了并且WritableComparable类在jar中.

我的UDF类看起来像这样:

public class INCREMENTAL_UPDATE extends EvalFunc<DataBag> {

    TupleFactory tupleFactory = TupleFactory.getInstance();
    BagFactory bagFactory = BagFactory.getInstance();


    public DataBag exec(Tuple input) throws IOException {
        if (null == input || input.size() != 0) {
            return null;
        }

        try {
            DataBag inputbag = (DataBag) input.get(0);
            Iterator it = inputbag.iterator();

            DataBag outputbag = bagFactory.newDefaultBag();

            Tuple previousTuple = null;
            while (it.hasNext()) {
                Tuple currentTuple = (Tuple) it.next();
                Tuple outputTuple = tupleFactory.newTuple();

                for (int …
Run Code Online (Sandbox Code Playgroud)

java hadoop apache-pig maven

0
推荐指数
1
解决办法
3159
查看次数