相关疑难解决方法(0)

什么是maven-shade-plugin,为什么要重新定位Java包?

我发现某人的pom.xml中使用了maven-shade-plugin.我之前从未使用过maven-shade-plugin(我是Maven n00b),所以我试着理解使用它的原因及其作用.

我查看了Maven文档,但是我无法理解这句话:

"这个插件提供了将工件打包在超级jar中的功能,包括它的依赖关系和阴影 - 即重命名 - 一些依赖项的包." 页面上的文档似乎不是新手友好的.

什么是"超级罐子?" 为什么有人想制作一个?重命名依赖项包的重点是什么?我试图通过maven-shade-plugin apache页面上的示例,例如"为Uber Jar选择内容",但我仍然无法理解"着色"所取得的成就.

任何指向说明性示例/用例的指针(解释为什么在这种情况下需要着色 - 解决了什么问题)将不胜感激.最后,我什么时候应该使用maven-shade-plugin?

java jar maven maven-shade-plugin

262
推荐指数
3
解决办法
8万
查看次数

Java动态加载类

我试图动态地将类加载到组件中.我正在使用文件选择器来选择将要加载的.JAR文件,然后使用选项窗格来获取类的名称.

我已经在互联网上搜索如何将java文件转换为URL以便在URLClassLoader中加载它我已经提出:

File myFile = filechooser.getSelectedFile();
String className = JOptionPane.showInputDialog(
    this, "Class Name:", "Class Name", JOptionPane.QUESTION_MESSAGE);

URL myUrl= null;
try {
    myUrl = myFile.toURL();
} catch (MalformedURLException e) {
}

URLClassLoader loader = new URLClassLoader(myUrl);
loader.loadClass(className);
Run Code Online (Sandbox Code Playgroud)

我现在收到一个'无法找到符号'错误,将URL加载到URLClassLoader中

java swing dynamic classloader

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

用于MATLAB的Java JPA类

我在Windows XP Pro SP3上使用MATLAB R2007b,Java 1.6 SE,Eclipse Helios和MySql 5.

我正在尝试创建一个使用JPA注释来访问MySql 5数据库的类库.我们的想法是MATLAB脚本实例化这些Java对象,这些对象提供用于访问数据库的API.

我可以创建我的注释类,它们在Eclipse中工作(即JUnit测试).我可以将代码导出到jar,我可以从命令提示符运行.

我使用javaaddpath()更新MATLAB Java类路径.我可以在MATLAB中实例化我的类.但是,当我调用我的init(),它调用javax.persistence.Persistence.createEntityManagerFactory()时,我得到了可怕的

"没有EntityManager的持久性提供程序"

此错误通常意味着persistence.xml文件不在正确的位置.但它必须是因为我的jar从命令行工作.将META-INF文件夹添加到MATLAB java类路径中没有帮助.无论是否添加了META-INF,也不会提取ja​​r并将提取的文件夹结构添加到类路径中.

有没有人有任何想法,坚果与否?有没有人在任何版本的MATLAB中做过这个.

谢谢.

-reilly.

java matlab jpa classpath

7
推荐指数
3
解决办法
3350
查看次数

MATLAB 2012+中的Apache HttpClient

我想使用apache httpclient与webservices进行交互.具体来说,我正在使用 http://mirror.arcor-online.net/www.apache.org//httpcomponents/httpclient/binary/httpcomponents-client-4.3-bin.zip

所以在MATLAB中我将所有包含的jar加载到javaclasspath中然后我可以创建到client-instance来使用:

在MATLAB 2007b和2011b中(这些是我的版本):

client = org.apache.http.impl.client.HttpClients.createDefault()
client =

org.apache.http.impl.client.InternalHttpClient@1e89831
Run Code Online (Sandbox Code Playgroud)

在2012b:

>> client = org.apache.http.impl.client.HttpClients.createDefault()

Java exception occurred:
java.lang.NoSuchFieldError: INSTANCE

    at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52)

    at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:56)

    at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<clinit>(DefaultHttpRequestWriterFactory.java:46)

    at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:72)

    at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:84)

    at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<clinit>(ManagedHttpClientConnectionFactory.java:59)

    at
    org.apache.http.impl.conn.PoolingHttpClientConnectionManager$InternalConnectionFactory.<init>(PoolingHttpClientConnectionManager.java:487)

    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:147)

    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:136)

    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:112)

    at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:710)

    at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:58)


>> client = org.apache.http.impl.client.HttpClients.createDefault()
Java exception occurred:
java.lang.NoClassDefFoundError: Could not initialize class org.apache.http.impl.conn.ManagedHttpClientConnectionFactory

    at
    org.apache.http.impl.conn.PoolingHttpClientConnectionManager$InternalConnectionFactory.<init>(PoolingHttpClientConnectionManager.java:487)

    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:147)

    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:136)

    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:112)

    at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:710)

    at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:58)
Run Code Online (Sandbox Code Playgroud)

这真是让我烦恼,因为2011b和2012b中的代码是相同的,所有jar都被加载,并且MATLAB中的两个Java版本也是相同的(1.6.0_17-b04).所以我真的不明白为什么课程在2012b中变得无法加载.

我尝试使用matlab类加载器 - 但这让我更加困惑:

>> jloader =  com.mathworks.jmi.ClassLoaderManager.getClassLoaderManager();
>> …
Run Code Online (Sandbox Code Playgroud)

java matlab apache-httpclient-4.x

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

如何从matlab运行clojure

如何从matlab运行clojure脚本?

我试过以下:用jdk 1.7运行matlab然后调用java

MATLAB_JAVA=/usr/lib/jvm/java-7-oracle/jre matlab
Run Code Online (Sandbox Code Playgroud)

在matlab中,设置classpath并使用clojure编译器

javaaddpath([pwd '/lib/clojure-1.5.1.jar'])
import clojure.lang.RT
Run Code Online (Sandbox Code Playgroud)

我在这里得到错误:

Error using import
Import argument 'clojure.lang.RT' cannot be found or cannot be imported. 
Run Code Online (Sandbox Code Playgroud)

当我编写运行clojure的java类时,一切都在从控制台运行,但是不能从matlab运行.请指教.

matlab clojure classpath

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