小编Yup*_*ing的帖子

具有依赖关系的Maven 2程序集:不包括范围"系统"下的jar

我正在使用maven-assembly插件来创建我的应用程序的jar,包括其依赖项如下:

<assembly>
    <id>macosx</id>
    <formats>
       <format>tar.gz</format>
       <format>dir</format>
    </formats>
    <dependencySets>
        <dependencySet>
            <includes>
                <include>*:jar</include>
            </includes>
            <outputDirectory>lib</outputDirectory>
        </dependencySet>
    </dependencySets>
</assembly>
Run Code Online (Sandbox Code Playgroud)

(我省略了一些与问题无关的其他内容)

到目前为止,这工作得很好,因为它创建了一个lib包含所有依赖项的目录.但是,我最近添加了一个新的依赖项,其范围是system,并且它不会将其复制到lib输出目录.我必须遗漏一些基本的东西,所以我打电话求助.

我刚刚添加的依赖项是:

<dependency>
  <groupId>sourceforge.jchart2d</groupId>
  <artifactId>jchart2d</artifactId>
  <version>3.1.0</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/external/jchart2d-3.1.0.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我能够包含此依赖项的唯一方法是将以下内容添加到assembly元素:

<files>
    <file>
        <source>external/jchart2d-3.1.0.jar</source>
        <outputDirectory>lib</outputDirectory>
    </file>
</files>
Run Code Online (Sandbox Code Playgroud)

但是,这会强制我在重命名此jar时更改pom和程序集文件(如果有的话).而且,这似乎是错的.

我有试过<scope>runtime</scope>dependencySets<include>sourceforge.jchart2d:jchart2d</include>没有运气.

那么如何system在maven 2中将scoped jar 包含到汇编文件中?

非常感谢

maven-2 maven-plugin maven-assembly-plugin

59
推荐指数
4
解决办法
7万
查看次数

为什么我不应该在JNI中重用jclass和/或jmethodID?

这是一个与前一篇文章相关的问题,但这篇文章已经解决,现在我想改变问题的方向.

使用JNI时,有必要询问JNIEnv对象jclass以及jmethodID将在C/C++代码中使用的每个类和方法.为了清楚起见,我想从C/C++调用Java构造函数或方法.

由于从Java到C/C++(反之亦然)的通信成本很高,我最初认为最小化这种方法的一种方法是重用jclassjmethodID.因此,我将此实例保存在全局变量中,如下所示:

jclass    someClass  = NULL;
jmethodID someMethod = NULL;

JNIEXPORT jobject JNICALL Java_example_method1(JNIEnv *env, jobject jobj) {
    // initialize someClass and someMethod if they are NULL
    // use someClass and someMethod to call java (for example, thru NewObject)
}

JNIEXPORT jobject JNICALL Java_example_method2(JNIEnv *env, jobject jobj) {
    // initialize someClass and someMethod if they are NULL
    // use someClass and someMethod to call java again
} …
Run Code Online (Sandbox Code Playgroud)

java java-native-interface

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

使用CMake和Xcode:修改CMakeLists.txt时保持项目更改

首先,我从未使用Xcode开发过.我有一个项目是由我在特定环境(Linux和emacs)下开发的,现在一些使用不同环境的同事将与我合作.这是一个使用CMake的C++项目.

长话短说:

  • 我使用Linux/emacs.其他开发人员使用mac/Xcode.
  • 我使用GNU Makefiles生成器.他们使用Xcode生成器.
  • 一切似乎都运转正常.

问题

Xcode开发人员将使用Xcode 的Group&Files窗口的Executables列表下显示的可执行文件.他们将通过双击并添加他们的调整来配置它(配置调试目录,设置环境变量,但更重要的是,设置可执行文件的参数).

当开发人员(我)更改CMakeLists.txt(即添加新的源文件)时,XCode开发人员被迫重新生成他们的项目,他们将失去上面提到的所有配置.

问题:有没有办法避免这种情况?

如果每个Xcode开发人员不断丢失该配置,我肯定会是唯一使用CMake的人.:(

谢谢你的帮助!

xcode cmake

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

LaTeX:每章参考书目

我正在帮助一位同事获得博士论文,我们需要在每章末尾提供参考书目.

问题是:有没有人使用latex + bibtex这个案例的最小工作示例?

我们使用的当前文档结构如下:

main.tex
chap1.tex
chap2.tex
...
chapn.tex
biblio.bib
Run Code Online (Sandbox Code Playgroud)

其中main.tex包含\include每章的包,文档声明,宏和s.biblio.bib唯一的 bibtex文件(我认为在一个地方更容易引用所有引用).

我们搜索并尝试了不同的乳胶包装,阅读和遵循他们的文档.具体来说,bibitems和chapterbib.

bibitems成功生成bu*.aux文件,但是当为每一个文件运行bibtex时,由于文件中没有\bibdata元素,因此会发生错误.aux.

chapterbib也会生成一个.aux文件,但是bibtex会\bibliography{file}.tex文件中使用多个错误而导致错误(每章一个).

一些同事建议为每一章使用单独的bibtex文件,这可能是将来引用不同章节中相同出版物时的维护问题.

如果可能,我们希望继续使用此文档结构.所以,如果有人能够解决这个问题,我们将不胜感激.

谢谢.


更新:发现MWE 感谢Habi的帮助,这是一个有效的例子:

使用上面提到的文档结构:

% main.tex
\documentclass{report}
\usepackage{url}
\usepackage{natbib}
\usepackage{chapterbib}

\begin{document}

\include{chap1}
\include{chap2}
% other chapters ...

\end{document}

% chap1.tex
\chapter{one chapter}
text~\cite{paper1}
text~\cite{paper2}
% don't forget:
\bibliographystyle{plainnat}
\bibliography{biblio}

% chap2.tex
\chapter{another chapter}
text~\cite{paper2, paper3}
% don't forget, again:
\bibliographystyle{plainnat}
\bibliography{biblio}

% …
Run Code Online (Sandbox Code Playgroud)

latex bibtex

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

在不使用matlab头文件和库的情况下编写MAT文件

我有一些数据,我想保存到MAT文件(版本4或5,或任何版本,就此而言).问题:我想在不使用matlab库的情况下这样做,因为这个代码不需要在带有matlab的机器上运行.我的程序使用Java和C++,因此用这些语言实现的任何现有库都可以帮助我...

我做了一些研究但没有在Java/C++中找到任何东西.但是,我发现python上的scipy用mio4.py或实现了这个mio5.py.我想过在java或C++上实现它,但它似乎有点超出我的时间表.

所以问题是:Java或C/C++中是否有允许在不使用Matlab库的情况下保存MAT文件的库?

非常感谢

c++ java matlab mat-file

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

在共享库中显式化实例化模板化类和dynamic_cast

我今天偶然发现了一个问题,似乎无法解决.我正在编译一个共享库,其中包含一个模板化的类(Derived<T>,其基础是Base)以及该类的一些显式实例化.我希望库用户从这个模板化的类扩展.当我尝试将出现问题dynamic_cast的用户的情况下,从Base*Derived<T>*.

我已将问题缩小到这个MWE:

共享库包含以下文件:

Base.h

#ifndef BASE_H_
#define BASE_H_

class Base {
public:
    Base();
    virtual ~Base();
};

#endif /* BASE_H_ */
Run Code Online (Sandbox Code Playgroud)

Derived.h

#ifndef DERIVED_H_
#define DERIVED_H_    
#include <Base.h>

template <typename T>
class Derived : public Base {
public:  
    Derived();
    virtual ~Derived();
};

#endif /* DERIVED_H_ */
Run Code Online (Sandbox Code Playgroud)

Derived.cpp

#include <Derived.h>

template <typename T>
Derived<T>::Derived() :
    Base() {
}

template <typename T>
Derived<T>::~Derived() {
}

// explicit instantiations
template class Derived<float>;
template class …
Run Code Online (Sandbox Code Playgroud)

c++ templates dynamic-cast shared-libraries

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

为什么gdb显示两个不同的回报?

上周我调试了一个代码,出现了一个奇怪的情况:gdb传递了两个不同的return子句.我做了一个简单的例子说明了这种情况:

#include <iostream>

using namespace std;

int test() {

    string a = "asd";
    string b = "asd";

    while (true) {
        if (a == b) {
            return 0;
        }
    }
    return -1;
}

int main() {
    int result = test();
    cout << "result: " << result << endl;
}
Run Code Online (Sandbox Code Playgroud)

在调试我得到的代码时:

(gdb) b main
Breakpoint 1 at 0x1d4c: file example.cpp, line 19.
(gdb) r
Starting program: /Users/yuppienet/temp/a.out 
Reading symbols for shared libraries +++. done

Breakpoint 1, main () at example.cpp:19
19          int …
Run Code Online (Sandbox Code Playgroud)

c++ gdb

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

显示有时printf作为调试可能隐藏错误的教育示例

我记得当我在某个C编程课程中时,老师曾经建议我用它printf来观察我试图调试的程序的执行情况.这个程序有一个分段错误,目前我记不住了.我听从他的建议,分段错误消失了.幸运的是,聪明的TA告诉我调试而不是使用printfs.在这种情况下,这是一件有用的事情.

所以,今天我想向某人展示使用printf可能隐藏错误,但我找不到那个有这个奇怪错误的旧代码(功能?嗯).

问题:你们有没有遇到过这种行为?我怎么能重现这样的东西?

编辑:

我看到我的问题部分将我的观点定位为"使用printf是错误的".我并不是那么说,我不喜欢采取极端的意见,所以我正在编辑一些问题.我同意这printf是一个很好的工具,但我只想重新创建一个案例,其中printfs使分段错误消失,因此,证明必须小心.

c debugging segmentation-fault printf-debugging

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

对指针列表进行排序

我再一次发现自己在C++中完成了一些非常简单的任务.有时候我希望我可以在java中从OO中学习我所知道的所有内容,因为我的问题通常都是从Java开始思考.

无论如何,我有一个std::list<BaseObject*>我想要排序的.让我们说BaseObject是:

class BaseObject {
protected:
    int id;
public: 
    BaseObject(int i) : id(i) {};
    virtual ~BaseObject() {};
};
Run Code Online (Sandbox Code Playgroud)

我可以BaseObject使用比较器结构对指针列表进行排序:

struct Comparator {
    bool operator()(const BaseObject* o1, const BaseObject* o2) const {
        return o1->id < o2->id;
    }
};
Run Code Online (Sandbox Code Playgroud)

它看起来像这样:

std::list<BaseObject*> mylist;
mylist.push_back(new BaseObject(1));
mylist.push_back(new BaseObject(2));
// ...

mylist.sort(Comparator()); 

// intentionally omitted deletes and exception handling
Run Code Online (Sandbox Code Playgroud)

直到这里,一切都很好.但是,我介绍了一些派生类:

class Child : public BaseObject {
    protected:
    int var;
    public: 
    Child(int id1, int n) : BaseObject(id1), var(n) {};
    virtual …
Run Code Online (Sandbox Code Playgroud)

c++ sorting pointers stl

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

更改JPanel及其所有元素的字体大小

我正在尝试创建一个Swing面板,其元素的字体大小与swing应用程序的其余部分不同.最初,使用setFont几个组件并没有造成任何问题.现在我有几个组件(及其所有子组件),因此这个解决方案是不切实际的.

我搜索过有关更改swing组件的默认UI属性的信息.我发现的主要是使用UIManager,它可以全局更改属性.这对我不起作用,因为我想保留所有其他面板的当前字体设置.

目前(因为我不想在没有首先尝试的情况下发帖),我有一个这样的算法:

public static void fixFont(Container c) {
    c.setFont(c.getFont().deriveFont(10.0f));
    Component[] comp = c.getComponents();
    for (int i=0;i<comp.length;++i) {
        if (comp[i] instanceof Container) {
            fixFont((Container) comp[i]);
        } else {
            comp[i].setFont(comp[i].getFont().deriveFont(10.0f));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是:

  • 它不包括某些摆动元素,如边界.
  • 当我动态添加其他组件时,我必须调用此函数

问题:是否有其他方法可以更改Swing面板及其所有组件,元素等的字体属性(即面板中的所有内容)?

谢谢你的想法

java swing

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