我用ikvm从fop-1.0生成了一个fop.dll:
ikvmc -target:library -reference:IKVM.OpenJDK.Core.dll -recurse:{myPathToJars}\*.jar -version:1.0 -out:{myPathToJars}\fop.dll
如果我在Windows应用程序中使用我的fop.dll,一切都很完美.
如果我在类库中使用它,我会收到以下错误:
"Provider com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl not found" at javax.xml.transform.TransformerFactory.newInstance()
代码行是:
TransformerFactory factory = TransformerFactory.newInstance();这是方法的代码:
public static void xmlToPDF(String xmlPath, String xslPath, SortedList arguments, String destPdfPath)
{
java.io.File xmlfile = new java.io.File(xmlPath);
java.io.File pdffile = new java.io.File(destPdfPath);
try
{
// configure fopFactory as desired
FopFactory fopFactory = FopFactory.newInstance();
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
// configure foUserAgent as desired
// Setup output
OutputStream outputStream = new java.io.FileOutputStream(pdffile);
outputStream = new java.io.BufferedOutputStream(outputStream);
try
{
// Construct fop … 我有一个使用第三方DLL的签名应用程序.这些DLL没有签名. - 到目前为止第一步没有问题:我刚刚签署了它们(使用ildasm.exe获取*.il,*.il中的publickeytoken,因为它们具有相互依赖关系,并使用ilasm.exe创建*.dll)
该项目现在编译良好,也启动.
但是在我的代码中,调用第三方DLL的类构造函数(或其他东西? - 这是我做的第一件事),我得到错误"强名称签名程序集必须在其中指定一个公钥InternalsVisibleTo声明"
如果你有DLL的源代码似乎没有问题,并且可以通过设置调整AssemblyInfo.cs
[assembly: InternalsVisibleTo("MyProject.Domain.Tests, PublicKey=..."]
Run Code Online (Sandbox Code Playgroud)
但是:如上所述,我有一个第三方DLL我没有源.所以没办法像这样解决问题.
有什么建议让这个运行?