我正在尝试编译这个UDF:
package com.dataminelab.hive.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
import java.security.*;
/**
* Calculate md5 of the string
*/
public final class Md5 extends UDF {
public Text evaluate(final Text s) {
if (s == null) {
return null;
}
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(s.toString().getBytes());
byte[] md5hash = md.digest();
StringBuilder builder = new StringBuilder();
for (byte b : md5hash) {
builder.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
}
return new Text(builder.toString());
} catch (NoSuchAlgorithmException nsae) {
System.out.println("Cannot find digest algorithm");
System.exit(1); …Run Code Online (Sandbox Code Playgroud) 我正在尝试为所有子项目定义一个jar任务(大约30个).我尝试了以下任务:
jar {
destinationDir = file('../../../../_temp/core/modules')
archiveName = baseName + '.' + extension
metaInf {
from 'ejbModule/META-INF/' exclude 'MANIFEST.MF'
}
def manifestClasspath = configurations.runtime.collect { it.getName() }.join(',')
manifest {
attributes("Manifest-Version" : "1.0",
"Created-By" : vendor,
"Specification-Title" : appName,
"Specification-Version" : version,
"Specification-Vendor" : vendor,
"Implementation-Title" : appName,
"Implementation-Version" : version,
"Implementation-Vendor" : vendor,
"Main-Class" : "com.dcx.epep.Start",
"Class-Path" : manifestClasspath
)
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,子项目之间的依赖关系不包含在清单的类路径中.我尝试将运行时配置更改为编译配置,但这会导致以下错误.
- 出了什么问题:评估项目':EskoordClient'时出现问题.
您无法更改未处于未解决状态的配置!
这是我的项目EskoordClient的完整构建文件:
dependencies {
compile project(':ePEPClient')
}
Run Code Online (Sandbox Code Playgroud)
我的大多数子项目构建文件只定义项目依赖项.第三方lib依赖项在超级项目的构建文件中定义.
是否有可能将所有需要的类路径条目(第三方库和其他项目)包含到所有子项目的超级项目中的清单类路径中.
我有两个jar文件 - jar1和jar2.它们都位于C:\ Eclipse projects \中,我已将它们的路径添加到环境变量CLASSPATH中,如下所示
.;C:\Program Files\Java\jre6\lib\ext\QTJava.zip;C:\Eclipse projects\stdlib.jar;C:\Eclipse projects\algs4.jar
Run Code Online (Sandbox Code Playgroud)
".;" 一开始就在那里,所以我离开了他们.然后我从它们的位置C:\ Eclipse projects \中将jar添加到项目中,它们显示为Referenced Libraries.但是,当我尝试从jar实例化一个类时,它无法识别它.我也无法导入jar(导入jar1).
我尝试在项目中添加一个lib文件夹后,我在那里添加了jar.之后,我再次将它们作为引用添加(因此它们在Referenced Libraries中不会出现两次),但是,我仍然无法使用内部类.任何帮助都感激不尽.
更新:我的结局肯定是错的.这些建议都不适合我.这是一个包含所有步骤的视频:screencast.com/t/gC81YzCsLY0e
回到顶端|提供反馈解决方案在我的项目中,我有一个名为TestProject的包,似乎这些jar需要一个默认包.删除TestProject包并使用defaultPackage后,一切都在添加外部JAR后正常工作,如下所述.
我Gson library用来将对象转换为对象,Json反之亦然。我已jars将该库的复制到一个新文件夹中lib,并将其添加到我的项目中的构建路径中Eclipse IDE。
我有一个主类,在其中我将对象转换为Json,toJson()如下所示,并将其发送给servletusing Apache HttpClient's HttpPost()。
Gson gson= new Gson();
String json = gson.toJson(names);
Run Code Online (Sandbox Code Playgroud)
但是在执行以下代码时,我servlet无法将转换Json为Objectusing fromJson()。
Gson gson = new Gson();
Names names = gson.fromJson(s, Names.class);
Run Code Online (Sandbox Code Playgroud)
它引发以下异常:
java.lang.NoClassDefFoundError: com/google/gson/Gson
Run Code Online (Sandbox Code Playgroud)
知道为什么会这样吗?我应该将拷贝jars到WebContent/WEB-INF/lib文件夹中而不是将新文件夹复制到lib吗?
eclipse classpath gson apache-httpcomponents apache-httpclient-4.x
学习oracle认证我正在尝试考试期间可能出现的所有可能情况.例如,这里有一点关于shell命令行(基于unix)的疑问:
我们假设有一个名为的文件夹myProject和一个名为的子文件夹myProject/source.
文件SubFile.java位于文件夹中myProject/source,另一个文件File.java位于myProject文件夹中.
通过键入以下命令,我会遇到不同的行为:
cd source (因此,目前我在"myProject/source")
javac -sourcepath ../ File.java
//命令../无法访问"文件夹",然后File.java从myProject文件夹编译后返回子文件夹,如果我尝试:
javac -classpath ../ SubFile.java
//带有标志-classpath它似乎接受../访问该super文件夹的语法.
你知道它为什么会这样吗?而且有没有机会访问super带有-sourcepath标志的文件夹?
我目前正在加载Java类Class.forName()来加载它.
clazz = Class.forName("interfaces.MyClass");
Run Code Online (Sandbox Code Playgroud)
但是现在我想从不同的目录加载类,我试图设置classpath
clazz = Class.forName("-cp \"C:/dir\" distantinterfaces.DistantClass");
Run Code Online (Sandbox Code Playgroud)
没有成功ClassNotFoundException.远程班级的完整路径是:
C:/dir/distantinterfaces/DistantClass.class
Run Code Online (Sandbox Code Playgroud) 假设我们想要require在Scala中构建一个类似于许多脚本语言的功能.
如果我们需要像这样的图书馆......
require("some-library.jar")
Run Code Online (Sandbox Code Playgroud)
...当执行require宏时,我们需要一种方法将此jar添加到编译器的类路径中.如何才能做到这一点?
我正在研究ScalaInAction中的示例,我无法运行遍布多个文件并放在单个包中的示例.
这是代码.
mongoclient.scala
package com.scalainaction.mongo
import com.mongodb._
class MongoClient(val host:String, val port:Int) {
require(host != null, "You have to provide a host name")
val underlying = new com.scalainaction.mongo.Mongo
def this() = this("127.0.0.1", 27017)
def version = underlying.getVersion
def dropDB(name:String) = underlying.dropDatabase(name)
def createDB(name:String) = DB(underlying.getDB(name))
def db(name:String) = DB(underlying.getDB(name))
}
DB.scala
package com.scalainaction.mongo
import com.mongodb.{DB => MongoDB}
import scala.collection.convert.Wrappers._
class DB private(val underlying: MongoDB) {
private def collection(name: String) = underlying.getCollection(name)
def readOnlyCollection(name: String) = new DBCollection(collection(name))
def administrableCollection(name: String) …Run Code Online (Sandbox Code Playgroud) 使用托管依赖项时,我可以告诉sbt下载javadoc和源代码:
"mygroup" % "mymodule" % "myversion" withJavadoc() withSources()
Run Code Online (Sandbox Code Playgroud)
但是这些jar似乎不在运行时类路径上?
我想做的是从我的应用程序访问javadocs和源代码.我可以将这些罐子显示为托管资源,这样我就能做到
ClassLoader.getSystemClassLoader.getResource("/my/package/MyDependency.scala")
Run Code Online (Sandbox Code Playgroud)
?
我已经在这些战壕中战斗了一段时间,但尚未开始工作.在SO以及其他类似博客或此SO帖子中使用了很多示例,我仍然无法超越Windows类路径限制.我目前正在处理一个在我的源代码中运行java类中的单个main方法的ant任务.如果我能在这里工作,我可以在其他地方推断.
首先,我原来的相关构建任务
<path id="code.classpath">
<path id="code.classpath">
<path refid="jars.code"/>
<path refid="jars.common"/>
<path refid="jars.servlet-api"/>
<dirset dir="${code.dir}" excludes="xlib/scripts/**"/>
</path>
<target name="code.exec" description="Execute a class file">
<echo>${code}</echo>
<input addproperty="code.exec.class">Enter full class name (e.g. ${atmr.pkg}.FooBar):</input>
<input addproperty="code.exec.args">Enter arguments:</input>
<java classname="${code.exec.class}"
fork="true"
dir="${code.src.dir}"
failonerror="true"
classpathref="code.classpath">
<jvmarg value="-Xmx4048M"/>
<jvmarg value="-ea"/>
<jvmarg value="-Dlog4j.configuration=file:${basedir}/log4j.xml"/>
<syspropertyset refid="proxy.properties"/>
<assertions refid="code.exec.assertions"/>
<arg line="${code.exec.args}"/>
</java>
</target>
Run Code Online (Sandbox Code Playgroud)
接下来,我最近尝试解决方案
<path id="code.source">
<dirset dir="${code.dir}" excludes="xlib/scripts/**"/>
</path>
<target name="code.classpath.acme">
<manifestclasspath property="jar.classpath" jarfile="${app.dir}/acme.jar">
<classpath refid="code.source"/>
</manifestclasspath>
<jar destfile="${app.dir}/acme.jar" index="true">
<manifest>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest> …Run Code Online (Sandbox Code Playgroud)