我正在使用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>
(我省略了一些与问题无关的其他内容)
到目前为止,这工作得很好,因为它创建了一个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>
我能够包含此依赖项的唯一方法是将以下内容添加到assembly元素:
<files>
    <file>
        <source>external/jchart2d-3.1.0.jar</source>
        <outputDirectory>lib</outputDirectory>
    </file>
</files>
但是,这会强制我在重命名此jar时更改pom和程序集文件(如果有的话).而且,这似乎是错的.
我有试过<scope>runtime</scope>在dependencySets和<include>sourceforge.jchart2d:jchart2d</include>没有运气.
那么如何system在maven 2中将scoped jar 包含到汇编文件中?
非常感谢
这是一个与前一篇文章相关的问题,但这篇文章已经解决,现在我想改变问题的方向.
使用JNI时,有必要询问JNIEnv对象jclass以及jmethodID将在C/C++代码中使用的每个类和方法.为了清楚起见,我想从C/C++调用Java构造函数或方法.
由于从Java到C/C++(反之亦然)的通信成本很高,我最初认为最小化这种方法的一种方法是重用jclass和jmethodID.因此,我将此实例保存在全局变量中,如下所示:
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
} …首先,我从未使用Xcode开发过.我有一个项目是由我在特定环境(Linux和emacs)下开发的,现在一些使用不同环境的同事将与我合作.这是一个使用CMake的C++项目.
长话短说:
问题
Xcode开发人员将使用Xcode 的Group&Files窗口的Executables列表下显示的可执行文件.他们将通过双击并添加他们的调整来配置它(配置调试目录,设置环境变量,但更重要的是,设置可执行文件的参数).
当开发人员(我)更改CMakeLists.txt(即添加新的源文件)时,XCode开发人员被迫重新生成他们的项目,他们将失去上面提到的所有配置.
问题:有没有办法避免这种情况?
如果每个Xcode开发人员不断丢失该配置,我肯定会是唯一使用CMake的人.:(
谢谢你的帮助!
我正在帮助一位同事获得博士论文,我们需要在每章末尾提供参考书目.
问题是:有没有人使用latex + bibtex这个案例的最小工作示例?
我们使用的当前文档结构如下:
main.tex
chap1.tex
chap2.tex
...
chapn.tex
biblio.bib
其中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}
% …我有一些数据,我想保存到MAT文件(版本4或5,或任何版本,就此而言).问题:我想在不使用matlab库的情况下这样做,因为这个代码不需要在带有matlab的机器上运行.我的程序使用Java和C++,因此用这些语言实现的任何现有库都可以帮助我...
我做了一些研究但没有在Java/C++中找到任何东西.但是,我发现python上的scipy用mio4.py或实现了这个mio5.py.我想过在java或C++上实现它,但它似乎有点超出我的时间表.
所以问题是:Java或C/C++中是否有允许在不使用Matlab库的情况下保存MAT文件的库?
非常感谢
我今天偶然发现了一个问题,似乎无法解决.我正在编译一个共享库,其中包含一个模板化的类(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_ */
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_ */
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 …上周我调试了一个代码,出现了一个奇怪的情况: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;
}
在调试我得到的代码时:
(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 …我记得当我在某个C编程课程中时,老师曾经建议我用它printf来观察我试图调试的程序的执行情况.这个程序有一个分段错误,目前我记不住了.我听从他的建议,分段错误消失了.幸运的是,聪明的TA告诉我调试而不是使用printfs.在这种情况下,这是一件有用的事情.
所以,今天我想向某人展示使用printf可能隐藏错误,但我找不到那个有这个奇怪错误的旧代码(功能?嗯).
问题:你们有没有遇到过这种行为?我怎么能重现这样的东西?
编辑:
我看到我的问题部分将我的观点定位为"使用printf是错误的".我并不是那么说,我不喜欢采取极端的意见,所以我正在编辑一些问题.我同意这printf是一个很好的工具,但我只想重新创建一个案例,其中printfs使分段错误消失,因此,证明必须小心.
我再一次发现自己在C++中完成了一些非常简单的任务.有时候我希望我可以在java中从OO中学习我所知道的所有内容,因为我的问题通常都是从Java开始思考.
无论如何,我有一个std::list<BaseObject*>我想要排序的.让我们说BaseObject是:
class BaseObject {
protected:
    int id;
public: 
    BaseObject(int i) : id(i) {};
    virtual ~BaseObject() {};
};
我可以BaseObject使用比较器结构对指针列表进行排序:
struct Comparator {
    bool operator()(const BaseObject* o1, const BaseObject* o2) const {
        return o1->id < o2->id;
    }
};
它看起来像这样:
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
直到这里,一切都很好.但是,我介绍了一些派生类:
class Child : public BaseObject {
    protected:
    int var;
    public: 
    Child(int id1, int n) : BaseObject(id1), var(n) {};
    virtual …我正在尝试创建一个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));
        }
    }
}
问题是:
问题:是否有其他方法可以更改Swing面板及其所有组件,元素等的字体属性(即面板中的所有内容)?
谢谢你的想法